在上一篇文章中讲述了scrapy爬虫的基本步骤,但是只可爬取strat_url的数据,https://blog.csdn.net/reset2021/article/details/124449231?spm=1001.2014.3001.5502
这里继续讲述一下多个url的爬虫流程
这次以同花顺行情数据url为讲解对象,主要爬取最新的行情数据。
1)新建项目
scrapy startproject tonghuashun2) 新建爬虫
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中内容比较简单明了,就不发布整体源码拉,后续将结合存储以及相关应用实现爬虫的数据分析。
版权声明:本文为reset2021原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。