scarpy 非常好用,也非常简单的爬虫工具,介绍一下这个工具的使用方法
首先是下载: pip install scarpy #简单的一句话就下载完成了
创建项目: scrapy startproject xinlang_spider #简单的一句话创建了一个文件列表
类似这样:
很好,这个文件的内容分别是,
spiders(写你具体要爬取的任务),
items(爬出来的字段保存在这里),
middlewares(中间件,一般不用你写,当然我也没了结过),
piplines(对爬出来的数据进行检验,不用也以),
settings(爬虫的很多东西要在这里配置,比如cokkie,并发数之类)
这几个是最主要的,其他的都是我自己写的
接下来你需要知道在spider文件里有一个spider.py的文件
这个文件已经给你写好了部分代码
像这样:
系统创建的范本继承的类是比较老试的,可以吧BaseSpider删掉
换成这样:
继承(scrapy.Spider)貌似是更好的选择
来看看这个类需要写的东西:
name(这个必须写,执行的时候会用name区分不同的项目)
allowd_domains(这个写你要爬行的网站的主地址)
start_urls(列表里写你需要爬行的地址,写多少个都行)
然后你需要在这个类里面写一个名字叫parse的函数
像这样:
class xinalng_spider(scrapy.Spider):
name='xinalng_spider'
allowd_domains=['http://vip.stock.finance.sina.com.cn/']
start_urls=['http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_FuQuanMarketHistory/stockid/sh600004.html?year=2017&jidu=1',
'http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_FuQuanMarketHistory/stockid/sh600004.html?year=2016&jidu=3']
def parse(self,response):
print response.xpath('div')
scrapy crawl xinalng_spider 执行一下,这个是执行scrapy的语句
嗯 现在response里面装的就是你爬行返回来的数据:
你需要做的就是解析一下他,
-------------------------------------------------------------------------------------------------
xpath(主要用于分割数据)和extract(主要用于序列化得到的数据)是这里比较常用的函数
response.xpath('')
xpath里面放的参数,就是你html里面每个标签的节点,你放哪个节点,他就返回哪个节点,
比如xpath('div/li')就是取回html页面上的所有div标签下面的li标签
或 xpath('div/li/test()')test是个函数,返回标签里的数据
或 xpath('div[@class='show']')选取类名为'show'的div标签
或 xpaht('div[contnins(@class,'show')]')这样也行
-------------------------------------------------------------------------------------------------
把标签选出来,再提取里面的数据,通过extract把数据序列化成列表
msg=response.xpath('div[@class='show']').extract()
-------------------------------------------------------------------------------------------------
也可以通过re()这个函数队提取的数据进行正则匹配
比如sel.xpath('td/div/text()').re(r'^\d*.\d*$')取出带小数位数的数组
或 sel.xpath('td/div/text()').re(r'\d{4}-\d{2}-\d{2}') 取出一个2012-02-02类似的日期
re返回的也一样是列表
-------------------------------------------------------------------------------------------------
这样msg里面保存的就是你提取的数据了,可以对数据进行保存或者处理工作
-------------------------------------------------------------------------------------------------
获取到msg后你可以 yield msg 遍历msg并打印到shell上
再通过 scrapy crawl xinalng_spider -o test.json 保存在json文件里,查看一下数据的完整性
未完待续....