python+scrapy爬虫时如何自动翻页获取内容

自动翻页分为两种情况:此处所举例子有一定的时效性,请具体情况具体分析,方法类似

(1)一种是像我之前爬虫新京报网的新闻,下一页的url可以通过审查元素获得,第一页的网址是http://www.bjnews.com.cn/news/list-43-page-1.html
在第一页的时候,下一页按钮的审查元素是

我们通过获取next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]
,便可以得到下一页的url,next_page = "http://www.bjnews.com.cn" + next_pages,

这一部分的完整代码为:

page_link=set() #保存下一页页面url

content_link=set() #保存页面内所有可获得的url

rules={'page':LinkExtractor(allow=(r'^http://www.bjnews.com.cn/\w+/2016/\d{2}/\d{2}/\d{6}.html
))}

start_urls={'http://www.bjnews.com.cn/news/list-43-page-1.html'}

def parse(self, response):

#爬取一个页面内的所有url链接

    for link in self.rules['page'].extract_links(response):

        if link.url not in self.content_link:

            self.page_link.add(link.url)

            yield scrapy.Request(link.url, callback=self.parse_item)

#自动获取下一页的url

    next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]

    if next_pages:

        next_page = "http://www.bjnews.com.cn" + next_pages

        self.page_link.add(next_page)

        yield scrapy.Request(next_page, callback=self.parse)


(2)第二种情况,就是在下一页的审查元素中没有提供url链接,需要自己分析,在这里依然举个例子,比如搜狐新闻http://news.sohu.com/guojixinwen.shtml,该页中下一页按钮的审查元素是:


我们不能通过href来直接过得下一页的url,需要自己手动获得,那现在我们来分析

第二页的url:http://news.sohu.com/guojixinwen_5230.shtml,第三页的http://news.sohu.com/guojixinwen_5229.shtml,最后一页的http://news.sohu.com/guojixinwen_5132.shtml,由此可以分析出这一共100页的url,是http://news.sohu.com/guoneixinwen_"+i+".shtml",其中i是从5230到5132倒序排列的,也就是说通过for循环,就可以获得这100页的所有url,完整代码如下:在这里给大家加一个新的方法的使用start_request,该方法就是子定义start_urls,把所有自定义的url放到page_link中,self.make_requests_from_url方法会自动获取里面的请求

page_link = set()

content_link=set()

rules = {'page':LinkExtractor(allow=(r'^http://news.sohu.com/\d{8}/\w+.shtml
))

def start_requests(self):

for i in range(5230, 5133)[::-1]:

url = "http://news.sohu.com/guoneixinwen_"+str(i)+".shtml"

self.page_link.add(url)

for url in self.page_link:

yield self.make_requests_from_url(url)

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • “贵族学校”不仅仅是“贵”而已_慧聚成长_新浪博客 http://blog.sina.com.cn/s/blog_...
    思文_cb94阅读 743评论 0 3
  • 爬虫初探-Scrapy Scrapy 资料 官方文档永远是首选,建议把 tutorial 完整的过一遍。 网址:h...
    廖少少阅读 2,127评论 0 3
  • 看着你们近来的照片 突然想起去年的这个时候 还陪伴在身边的人和自己 突然很想写一些很久没写的字 离开学校三年了吧,...
    小细娘阅读 240评论 0 0
  • “土豆,也太老土了吧?换个洋气点的名字。”热心的朋友总会这么说。 可是你知道吗?土豆曾经是我幼年时能够下咽的两种蔬...
    一念清宁阅读 4,067评论 17 14
  • 人都会不再年轻吧,不敢熬夜,随时打盹,头发稀疏,连食量都下降得厉害,干瞪眼连一碗面条都吃不下去了,这可是两样切条...
    咸吃萝卜阅读 420评论 0 0