python 爬虫实例_Python 爬虫:Scrapy 实例(二)

一次性付费进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:460500587

3b5dbde60a426ac15b5a73349c797fed.png

微信公众号:计算机与网络安全

ID:Computer-network

稍微增加点难度,做个所需项目多一点的爬虫,并将爬虫的结果以多种形式保存起来。我们就从网络天气预报开始。

首先要做的是确定网络天气数据的来源。打开百度,搜索“网络天气预报”,有很多网站可以选择,任意选择一个都可以。在浏览器中打开该网站,并找到所属的城市,将会出现当地一周的天气预报。 在这里,包含的信息有城市日期、星期、天气图标、温度、天气状况以及风向。除了天气图标是以图片的形式显示,其他的几项都是字符串。本文Scrapy爬虫的目标将包含所有的有用信息。至此,items.py文件已经呼之欲出了。

1、创建编辑Scrapy爬虫

首先还是打开Putty,连接到Linux。在工作目录下创建Scrapy项目,并根据提示依照spider基础模版创建一个spider。执行命令:

cd

cd code/scrapy

scrapy startproject weather

cd weather

scrapy genspider wuHanSpider wuhan.tianqi.com

执行结果如图1所示。

22b647e42d3d566d58f01c362532ce4a.png

图1  创建Scrapy项目

项目模版创建完毕,项目文件如图2所示。

44ed2fcb99c2163dc767ffe9f1022e7f.png

图2  基础项目模版

(1)修改items.py

修改后的items.py代码如下:

1 # -*- coding: utf-8 -*-

2

3    # Define here the models for your scraped items

4    #

5    # See documentation in:

6    # http://doc.scrapy.org/en/latest/topics/items.html

7

8    import scrapy

9

10

11    class WeatherItem(scrapy.Item):

12     # define the fields for your item here like:

13     # name = scrapy.Field()

14     cityDate = scrapy.Field() #城市及日期

15     week = scrapy.Field() #星期

16     img = scrapy.Field() #图片

17     temperature = scrapy.Field() #温度

18     weather = scrapy.Field() #天气

19     wind = scrapy.Field() #风力

在items.py文件中,只需要将希望获取的项名称按照文件中示例的格式填入进去即可。唯一需要注意的就是每一行最前面的到底是空格还是Tabstop。这个文件可以说是Scrapy爬虫中最没有技术含量的一个文件了。填空,就是填空而已。

(2)修改Spider文件wuHanSpider.py

第二个修改的文件是spiders/wuHanSpider.py。暂时先不要修改文件,使用scrapy shell命令来测试、获取选择器。执行命令:

scrapy shell https://www.tianqi.com/wuhan/

执行结果如图3所示。

e795db39c85c23b8bd74c96f36786d9e.png

图3  scrapy shell 从上图可看出response的返回代码为200,是正常返回,已成功获取该网页的response。下面开始试验选择器了。打开Chrome浏览器(任意一个浏览器都可以,哪个方便用哪个),在地址栏输入https://www.tianqi.com/wuhan/,按Enter键打开网页。在任意空白处右击,选择“查看网页源代码”。 在框架源代码页,使用Ctrl+f组合键查找关键词“武汉天气预报一周”,虽然有5个结果,但也能很容易就找到所需数据的位置,如图4所示。

3ead7bdb123b764fe49de7bbaac4d485.png

图4  查找所需数据位置 仔细观察了一下,似乎所有的数据都是在
这个标签下的,试下查找页面还有没有其他的
的标签(这种可能性已经很小了)。如果没有就将
作为XPath的锚点,如图5所示。

f3a4ab3e2dd115cbe9de5cb4e1cbd3ca.png

图5  测试锚点 从页面上来看,每天的数据并不是存在一起的。而是用类似表格的方式,按照列的方式来存储的。不过没关系,可以先将数据抓取出来再处理。先以锚点为参照点,将日期和星期抓取出来。回到Putty下的scrapy shell中,执行命令:

selector=response.xpath('//div[@]')

selector1=selector.xpath('ul[@]/li')

selector1

执行结果如图6所示。

01c6aca8ddd2dcd05ea09075b7b69268.png

图6  确定XPath锚点

然后从selector1中提取有效数据,如图7所示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值