爬虫学习总结三

三. Scrapy框架爬虫自动翻页及设置UA

1. 爬虫自动翻页方法

这里主要介绍两种翻页方法,一个是对页面源码中“下一页”进行解析,一个是直接对爬取的网站地址url进行分析。

第一种

基于上一章节所描述的对于python吧的爬虫,我们增加自动翻页功能来做进一步的完善。
我们可以发现,在python吧的页面源码中,当翻到最后一页时,“下一页”就消失了,所以可以根据这一特点进行解析,具体代码如下:

# -*- coding: utf-8 -*-
import scrapy
from FirstSpider.items import FirstspiderItem

class TiebaSpider(scrapy.Spider):
    name = 'TieBa'  # 爬虫名
    allowed_domains = ['tieba.baidu.com']  # 爬虫域
    start_urls = ['http://tieba.baidu.com/f?fr=wwwt&kw=python']  # 爬虫起始地址

    def parse(self, response):
        for li in response.xpath('//li[@class=" j_thread_list clearfix"]'):
            item = FirstspiderItem()
            item['title'] = li.xpath('./div/div[2]/div[1]/div[1]/a/text()').extract_first()
            item['author'] = li.xpath('./div/div[2]/div[1]/div[2]/span[1]/span[1]/a/text()').extract_first()
            item['rep_num'] = li.xpath('./div/div[1]/span/text()').extract_first()
            yield item

        # 列表页翻页
        next_url = response.xpath('//div[@id="frs_list_pager"]/a[contains(text(), "下一页>")]/@href').extract_first()
        if next_url is not None:
            next_url = 'http:' + next_url
            yield scrapy.Request(
                next_url, callback=self.parse,
            )

之后执行爬虫并将结果保存到csv文件中:scrapy crawl TieBa -o tb_all.csv
最后一共爬取了45239条,可以看出贴吧基本没有设立反爬机制,很适合新手进行练习。

第二种

从爬取的url中我们可以看出,都是有规律可寻的:
第一页
http://tieba.baidu.com/f?kw=python&ie=utf-8&pn=0
第二页
http://tieba.baidu.com/f?kw=python&ie=utf-8&pn=50
第三页
http://tieba.baidu.com/f?kw=python&ie=utf-8&pn=100

所以我们可以在start_urls部分直接将url进行一个迭代,具体代码如下:

start_urls = ['http://tieba.baidu.com/f?kw=python&ie=utf-8&pn={}'.format(i) for i in range(0,5000,50)]  # 获取1-100页的数据

至此,两种自动翻页的方法已经介绍结束,下一章主要针对拉勾网进行爬虫,并对数据结果进行分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值