在上一篇文章中讲述了scrapy爬虫的基本步骤,但是只可爬取strat_url的数据,https://blog.csdn.net/reset2021/article/details/124449231?spm=1001.2014.3001.5502
这里继续讲述一下多个url的爬虫流程
这次以同花顺行情数据url为讲解对象,主要爬取最新的行情数据。
1)新建项目
scrapy startproject tonghuashun
2) 新建爬虫
scrapy genspider quote_data q.10jqka.com.cn
此时的start_urls如下所示。
start_urls = ['http://q.10jqka.com.cn/']
首先需要解析该网页的行情数据的总页面。
def parse(self,response):
print(self.pageNum)
if self.pageNum == 0: num_info = response.xpath("//*[@id='m-page']/span/text()").extract() self.total_number = int(num_info[0].split('/')[-1]) else: items = []
3)增加具体的url
url = 'http://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/%d/ajax/1/' pageNum = 0 total_number = 0
这些url为本次爬虫的主要目标,是要爬取具体的行情数据。
4)url爬虫的流程实现如下:
if self.pageNum <= self.total_number: self.pageNum += 1 print('爬第:%d 页' % self.pageNum) new_url = self.url % self.pageNum # callback 回调函数,页面进行解析 yield scrapy.Request(url=new_url, callback=self.parse)
通过yield来进行循环爬取。
这样的话,整个流程实现了爬取 total_number+1 个页面的数据。
对url的爬取的数据进行解析,获取股票id,股票名称,股票最新价与最新的涨跌幅。
for each in response.xpath('/html/body/table/tbody/tr'): item = TonghuashunItem()
td_info = each.xpath('.//td')[1:]
stock_id = td_info[0].xpath('a/text()').extract()[0] stock_name = td_info[1].xpath('a/text()').extract()[0] price = td_info[2].xpath('text()').extract()[0] range = td_info[3].xpath('text()').extract()[0]
print(stock_id,stock_name,price,range)
if(stock_id != []): item['stock_id'] = stock_id if(stock_name != []): item['stock_name'] = stock_name if(price != []): item['price'] = price if(range != []): item['range'] = range
items.append(item)
该blog中内容比较简单明了,就不发布整体源码拉,后续将结合存储以及相关应用实现爬虫的数据分析。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试