scrapy多个url爬虫

在上一篇文章中讲述了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中内容比较简单明了,就不发布整体源码拉,后续将结合存储以及相关应用实现爬虫的数据分析。


版权声明:本文为reset2021原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。