继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python爬虫,基于scrapy

hadeslee
关注TA
已关注
手记 14
粉丝 4305
获赞 7388

此次爬虫是爬取一个彩票网站的历史开奖数据,我本来想象的发现什么规律。然实际效果很差啊!
[彩票网站的数据],我用爬虫把它保存下来。

scrapy startproject ssq

建立一个scrapy项目,然后它自动生成下面的文件:

.
├── scrapy.cfg
└── ssq
  ├── __init__.py
  ├── items.py
  ├── pipelines.py
  ├── settings.py
  └── spiders
    └── __init__.py

我们主要编辑两个文件,items.py。
这个文件简单来说,就像数据库,我们要在这里定义每张表,以及每张表的属性。这次比较简单,我们只需要定义一张‘表‘,就是双色球,以及双色球的红球1,红球2,红球3,红球4,红球5,红球6,和篮球,还有期号。就像这样:
items.py
写好了我们都需要爬取哪些数据,现在开始正式写爬虫文件。
在spider这个文件里新建一个文件,文件名自拟。
在这个文件里,我们需要用到刚才的items.py这个文件,除此之外我肯定需要导入scrapy这个module,为了绕过网站对于爬虫的过滤,我要加上header,这里就需要scrapy.http 下面的request。最后需要对返回的response进行处理,这里使用scrapy.selector下面的Selector。 如下图所示
import
从chrome复制出http的header
header
把它写到类里,除此之外,每一个scrapy项目应该有的三个属性,name,allowed_domains,start_url。
name:运行这个项目时候必备。
allowed_domains: 爬虫爬取的域名范围
start_url: 爬虫入口。(正常情况下,都是由此url开始爬取,然后把返回值交给parse函数处理数据。但是由于今天我们需要自定义header来简单绕过网站的反爬虫机制,所以没有使用默认的方法)
属性
这里开始一个函数start_request(self),自定义提交request的时候。,把header加入到request当中,并把返回response交给下一个函数处理
request
request(url,header,callback)这个函数有很多参数,这里我只用到了三个就够了。
callback意味着这个函数执行以后,继续调用parse2这个函数处理response。
接着,我们写parse2这个函数,来处理返回的response。
观察我需要处理的response,这里我使用selector.css()方法来定位数据所在的准确位置,当然你也可以用xpath
数据
我们把返回值response交给selector处理,它的css方法会找到所有标签<tr class='t_tr1'>,得到一个list。
由于我们要处理每一个<tr>,所以需要去迭代它。遍历它。
然后对其中的每一个<td> 找到我们需要的数据,也就是红球1,红球2,红球3,红球4,红球5,红球6,蓝球和期号所在的准确位置,提取出来。把每一个<tr>中得到数据存储到一个item当中,以此类推。
至此,代码部分结束了,不懂的,有疑惑的可以私信交流。
parse2
现在我们运行它
运行
得到一些数据,其实真的没什么用。
over——data

打开App,阅读手记
8人推荐
发表评论
随时随地看视频慕课网APP

热门评论

sudo apt-get install python-imaging

那到底   ...是没有用喽

查看全部评论