scrapy多个url爬虫

574次阅读
没有评论

在上一篇文章中讲述了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为本次爬虫的主要目标,是要爬取具体的行情数据。

scrapy多个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免费测试

相关文章:

版权声明:Python教程2022-10-25发表,共计1660字。
新手QQ群:570568346,欢迎进群讨论 Python51学习