首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scrapy忽略响应303 -未处理或不允许HTTP状态代码

Scrapy忽略响应303 -未处理或不允许HTTP状态代码
EN

Stack Overflow用户
提问于 2019-07-18 20:01:17
回答 2查看 654关注 0票数 0

我想从https://m.youtube.com上搜集评论

当我尝试抓取https://m.youtube.com时,它首先将我重定向到https://www.youtube.com。我已经编程我的蜘蛛不服从robot.txt,禁用cookies,尝试meta=dont_redirect。现在它没有将我重定向到https://www.youtube.com,但现在我收到响应“忽略响应<303 https://m.youtube.com/view_comment?v=xHkL9PU7o9k&gl=US&hl=en&client=mv-google>:HTTP状态码未处理或不允许”,我该如何解决这个问题。

我的爬虫代码如下:

代码语言:javascript
复制
    import scrapy

    class CommentsSpider(scrapy.Spider):
        name = 'comments'
        allowed_domains = ['m.youtube.com']
        start_urls = [
        'https://m.youtube.com/view_comment? 
        v=xHkL9PU7o9k&gl=US&hl=en&client=mvgoogle'
        ]


def start_requests(self):
    for url in self.start_urls:
        yield scrapy.Request(url, meta = {'dont_redirect': True})

def parse(self, response):
    x = response.xpath('/html/body/div[4]/div[2]/text()').extract()
    y = 
       response.xpath('/html/body/div[4]/div[3]/div[2]/text()').extract()

    yield{'Comments': (x, y)}

“”“

输出:

代码语言:javascript
复制
2019-07-18 16:07:23 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2019-07-18 16:07:24 [scrapy.core.engine] DEBUG: Crawled (303) <GET https://m.youtube.com/view_comment?v=xHkL9PU7o9k&gl=US&hl=en&client=mv-google> (referer: None)
2019-07-18 16:07:24 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <303 https://m.youtube.com/view_comment?v=xHkL9PU7o9k&gl=US&hl=en&client=mv-google>: HTTP status code is not handled or not allowed
2019-07-18 16:07:24 [scrapy.core.engine] INFO: Closing spider (finished)
EN

回答 2

Stack Overflow用户

发布于 2019-07-18 20:39:07

我会尝试使用移动浏览器的用户代理字符串,以避免被重定向:

代码语言:javascript
复制
USER_AGENT='Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
headers = {'User-Agent': USER_AGENT}

def start_requests(self):
    for url in self.start_urls:
        yield scrapy.Request(url, headers=self.headers)
票数 1
EN

Stack Overflow用户

发布于 2019-07-18 20:29:54

您可以使用handle_httpstatus_list According to Scrapy documentation属性。

在您的案例中:

代码语言:javascript
复制
class CommentsSpider(scrapy.Spider):
    name = 'comments'
    allowed_domains = ['m.youtube.com']
    start_urls = [
        'https://m.youtube.com/view_commentv=xHkL9PU7o9k&gl=US&hl=en&client=mvgoogle'
    ]
    handle_httpstatus_list = [303]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57093985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档