当前位置:   article > 正文

python爬虫<解决URL被重定向无法抓取到数据问题>_python爬取响应结果被重定向了

python爬取响应结果被重定向了

在写爱奇艺爬虫的时候经常碰到URL被重定向的问题,导致无法请求到数据:

以下是我的代码:

# -*- coding: utf-8 -*-

import scrapy

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
import re


class URLredirect(scrapy.Spider):
    name = 'urlredirect_spider'

    def start_requests(self):
        reqs = []
        url = 'http://www.iqiyi.com/v_19rrk4vf0k.html'
        req = scrapy.Request(url, headers=headers, meta={'url': url})
        reqs.append(req)
        return reqs

    def parse(self, response):
        responseURL = response.url
        requestURL = response.meta['url']
        print '''Response's URL: ''', response.url
        print '''Request's  URL: ''', response.meta['url']
        if str(responseURL).__eq__(requestURL):
            print re.compile('<title>(.*?)</title>').findall(response.body)[0].decode('utf-8')
        else:
            print '--------------------->>>>>>>>Your request is redirect,retrying.....<<<<<-------------------------'
            yield scrapy.Request(url=requestURL, headers=headers, meta={'url': requestURL}, callback=self.parse)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

大致意思就是判断如果没被重定向就解析网页,如果被重定向了就重新请求,以下是执行的结果:

这里写图片描述

解决的办法是在Request中将scrapydont_filter=True,因为scrapy是默认过滤掉重复的请求URL

这里写图片描述

添加上参数之后即使被重定向了也能请求到正常的数据了
这里写图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/226489?site
推荐阅读
相关标签
  

闽ICP备14008679号