【问题标题】:HTTP 403 Responses when using Python Scrapy使用 Python Scrapy 时的 HTTP 403 响应
【发布时间】:2023-03-14 10:04:01
【问题描述】:

我在 Windows Vista 64 位上使用 Python.org 版本 2.7 64 位。我一直在测试以下 Scrapy 代码,以递归地抓取网站 www.whoscored.com 上的所有页面,该网站用于足球统计:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from scrapy.item import Item
from scrapy.spider import BaseSpider
from scrapy import log
from scrapy.cmdline import execute
from scrapy.utils.markup import remove_tags


class ExampleSpider(CrawlSpider):
    name = "goal3"
    allowed_domains = ["whoscored.com"]
    start_urls = ["http://www.whoscored.com/"]
    rules = [Rule(SgmlLinkExtractor(allow=()), 
                  follow=True),
             Rule(SgmlLinkExtractor(allow=()), callback='parse_item')
    ]
    def parse_item(self,response):
        self.log('A response from %s just arrived!' % response.url)
        scripts = response.selector.xpath("normalize-space(//title)")
        for scripts in scripts:
            body = response.xpath('//p').extract()
            body2 = "".join(body)
            print remove_tags(body2).encode('utf-8')  


execute(['scrapy','crawl','goal3'])

代码正在执行,没有任何错误,但是在抓取的 4623 个页面中,217 个页面的 HTTP 响应代码为 200,2 个页面的代码为 302,4404 个页面的响应代码为 403。任何人都可以在代码中立即看到任何明显的东西,说明为什么会这样吗?这可能是该网站的反刮擦措施吗?通常的做法是减慢提交的数量以阻止这种情况发生吗?

谢谢

【问题讨论】:

    标签: python http scrapy


    【解决方案1】:

    HTTP 状态码 403 绝对意味着 禁止访问/拒绝访问
    HTTP 状态码 302 用于重定向请求。无需担心它们。
    您的代码似乎没有任何问题。

    是的,这绝对是网站实施的反抓取措施

    请参阅 Scrapy Docs 中的这些指南:Avoid Getting Banned

    另外,你应该考虑pausing and resuming crawls

    【讨论】:

      【解决方案2】:

      如果它仍然可用,我不这样做,但我必须将下一行放在 setting.py 文件中:

      HTTPERROR_ALLOWED_CODES  =[404]
      USER_AGENT = 'quotesbot (+http://www.yourdomain.com)'
      USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36"
      

      希望对你有帮助。

      【讨论】:

      • 这在第一次运行时对我有用,然后停止工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      相关资源
      最近更新 更多