基于Selenium写的Python天气爬虫

天气如此炎热!

写个爬虫降降温???

看完天气预报,嗯瞬间感觉热了好多!

学习还是要继续!

昨天没有说明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,有兴趣的可以去看下官方文档,那个版本开始做的此项的修改。"""

原文发布于微信公众号 - 萌海无涯(mhwyhtwa)

原文发表时间:2019-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券