天气如此炎热!
写个爬虫降降温???
看完天气预报,嗯瞬间感觉热了好多!
学习还是要继续!
昨天没有说明XPath
今天现给补充点常用规则
XPath常用规则
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从当前节点选取直接子节点 |
// | 从当前节点选取子孙节点 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
这里列出了XPath的常用匹配规则,示例如下:
1 | //title[@lang='eng'] |
---|
这次和昨天不太一样的地方是,没有看到浏览器打开,
这个叫做无头浏览器。
一样可以加载动态网页生产的内容。
嗯,用来爬天气,大材小用。
不写了!太热了!
import timefrom selenium import webdriverfrom selenium.webdriver.chrome.options import Options
# 这个是一个用来控制chrome以无界面模式打开的浏览器# 创建一个参数对象,用来控制chrome以无界面的方式打开chrome_options = Options()# 这里固定写法 必须这么写chrome_options.add_argument('--headless')# 驱动路径 谷歌的驱动存放路径,上篇文章提供了下载地址path = r'C:\Users\Administrator\AppData\Local\Programs\Python\Python37\chromedriver.exe'
def tqyb(browser, date=7): # 请求的url url = 'http://www.weather.com.cn/weather/101200101.shtml' # 访问url browser.get(url) # 定义一个空列表 tq = list() date += 1 for i in range(1, date): # xpath = r'//*[@id="hidden_title"]' # 一天天气 xpath = r'//*[@id="7d"]/ul/li[{}]'.format(i) # 7天天气 # 使用xpath提取数据,并添加到列表中 tq.append(browser.find_element_by_xpath(xpath).text) # 返回一周天气的列表 return tq
# 创建浏览器对象browser = webdriver.Chrome(executable_path=path,chrome_options=chrome_options)# 调用函数获取天气tq = tqyb(browser)# 打印天气列表print(tq)# 想要逐行打印可以使用for 循环for i in tq: print(i)# 可以使用延时操作# time.sleep(1)# 可以截图看下浏览器打开的内容# browser.save_screenshot('tianqi.png')# 关闭标签browser.quit()# 退出刘览器# browser.close()"""DeprecationWarning: use options instead of chrome_options browser = webdriver.Chrome(executable_path=path,chrome_options=chrome_options)查了下百度,给出的说明是,下面这样 ,意思就是不用管它!
根据源码的提示发现使用chrome_options 时会将chrome_options 值传给options,然后在给一个警告信息,根据错误信息已经源码的注解了解到未来options会取代chrome_options,所以我们只需要chrome_options改成options即可,该问题应该在最近的版本更改的目前我这边使用的是selenium==3.9.0,有兴趣的可以去看下官方文档,那个版本开始做的此项的修改。"""