此次爬虫是爬取一个彩票网站的历史开奖数据,我本来想象的发现什么规律。然实际效果很差啊!
[彩票网站的数据],我用爬虫把它保存下来。
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,和篮球,还有期号。就像这样:
写好了我们都需要爬取哪些数据,现在开始正式写爬虫文件。
在spider这个文件里新建一个文件,文件名自拟。
在这个文件里,我们需要用到刚才的items.py这个文件,除此之外我肯定需要导入scrapy这个module,为了绕过网站对于爬虫的过滤,我要加上header,这里就需要scrapy.http 下面的request。最后需要对返回的response进行处理,这里使用scrapy.selector下面的Selector。 如下图所示
从chrome复制出http的header
把它写到类里,除此之外,每一个scrapy项目应该有的三个属性,name,allowed_domains,start_url。
name:运行这个项目时候必备。
allowed_domains: 爬虫爬取的域名范围
start_url: 爬虫入口。(正常情况下,都是由此url开始爬取,然后把返回值交给parse函数处理数据。但是由于今天我们需要自定义header来简单绕过网站的反爬虫机制,所以没有使用默认的方法)
这里开始一个函数start_request(self),自定义提交request的时候。,把header加入到request当中,并把返回response交给下一个函数处理
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当中,以此类推。
至此,代码部分结束了,不懂的,有疑惑的可以私信交流。
现在我们运行它
得到一些数据,其实真的没什么用。
共同学习,写下你的评论
评论加载中...
作者其他优质文章