当前位置: 首页 > 知识库问答 >
问题:

Scrapy Splash为任何站点返回403

张砚
2023-03-14

由于某些原因,在使用Splash时,我有403用于任何请求。我做错了什么?

以下https://github.com/scrapy-plugins/scrapy-splash我设置了所有设置:

SPLASH_URL = 'http://localhost:8050'
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

开始和docker吵架

sudo docker run-p 8050:8050刮水/飞溅

蜘蛛代码:

import scrapy

from scrapy import Selector
from scrapy_splash import SplashRequest


class VestiaireSpider(scrapy.Spider):
    name = "vestiaire"
    base_url = "https://www.vestiairecollective.com"
    rotate_user_agent = True

    def start_requests(self):
        urls = ["https://www.vestiairecollective.com/men-clothing/jeans/"]
        for url in urls:
            yield SplashRequest(url=url, callback=self.parse, meta={'args': {"wait": 0.5}})

    def parse(self, response):
        data = Selector(response)
        category_name = data.xpath('//h1[@class="campaign campaign-title clearfix"]/text()').extract_first().strip()
        self.log(category_name)

然后我运行蜘蛛:

搔痒爬行试验

并返回403请求url:

2017-12-19 22:55:17[scrapy.utils.log]信息:scrapy 1.4.0启动(机器人程序:爬虫)2017-12-19 22:55:17[scrapy.utils.log]信息:覆盖的设置:{'DUPEFILTER_类':'scrapy_splash.SplashAwareDupeFilter','CONCURRENT_请求:'NEWSPIDER_模块':'crawler.SPIDER','SPIDER_模块':['rs.SPIDER'],'ROBOTSTXT_-obe':True,'COOKIES_-ENABLED':False,'BOT_-NAME':'crawler','HTTPCACHE_-STORAGE':'scrapy_-splash.SplashAwareFSCacheStorage'}2017-12-19 22:55:17[scrapy.middleware]信息:启用的扩展:['scrapy.extensions.telnet.TelnetConsole','scrapy.extensions.logstats.logstats','scrapy.extensions.memusage.MemoryUsage','scrapy.extensions.corestats.corestats']2017-12-19 22:55:17[scrapy.middleware]信息:启用的下载中间件:['scrapy.downloadermiddleware.robotstxt.RobotsTxtMiddleware','scrapy.downloadermiddleware.httpauth.HttpAuthMiddleware','scrapy.downloadermiddleware.downloaderTimeout.downloadermiddleware','scrapy.downloadermiddleware.DefaultHeadersMiddleware','scrapy.downloadermiddleware.useragent.UserAgentMiddleware','scrapy.downloader中间件.retry.RetryMiddleware',scrapy.Downloadermiddleware.redirect.MetaRefreshMiddleware',scrapy.Downloadermiddleware.redirect.RedirectMiddleware',scrapy_splash.SplashCookiesMiddleware',scrapy_splash.SplashMiddleware',scrapy.Downloadermiddleware.httpproxy中间件',scrapy.Downloadermiddleware',scrapypressionMiddleware“,”scrapy.downloaderMiddleware.stats.DownloaderStats“]2017-12-19 22:55:17[scrapy.middleware]信息:启用的蜘蛛中间件:[scrapy.SpiderMiddleware.httperror.HttpErrorMiddleware',scrapy_splash.splash重复数据消除中间件',scrapy.SpiderMiddleware.offsite.OffsiteIddleware',scrapy.SpiderMiddleware.referer.RefererMiddleware',scrapy.SpiderMiddleware.UrlLengthMiddleware',scrapy.SpiderMiddleware.DepthMiddleware']2017-12-19 22:55:17[scrapy.pipelines.images.ImagesPipeline']2017-12-19 22:55:17[scrapy.core.engine]信息:Spider打开2017-12-19 22:55:17[scrapy.extensions.logstats]信息:爬网0页(以0页/分钟的速度),爬网0项(以0项/分钟的速度)2017-12-19 22:55:17[scrapy.extensions.telnet]调试:Telnet控制台监听127.0.0.1:6023 2017-12-19 22:55:20[scrapy.core.engine]调试:爬网(200)https://www.vestiairecollective.com/robots.txt

共有1个答案

伊羽
2023-03-14

问题出在用户代理中。许多网站需要它来访问。访问该网站并避免禁令的最简单方法是使用此库随机化用户代理。https://github.com/cnu/scrapy-random-useragent

 类似资料:
  • 我在HBASE有一张桌子。我和菲尼克斯一起创造的 然后我用spark填充它(我使用hortonworks shc-core连接器): 多谢帮忙。

  • 使用:https://github.com/mafintosh/mongojs 查找所有内容 返回用户。看起来很棒 当我试图通过用户ID查找该用户时:failed 我知道数据库里有数据。我试过用不同的键(比如名称)搜索。为什么它找不到数据?

  • 当我使用MS Graph API并调用时,我会得到这个响应 {“@odata.context”:https://graph.microsoft.com/v1.0/$metadata#sites”,“value”:[]} 请求ID→cfb68a16-eb50-42ab-950c-fbfeec4Def5c 但是我可以使用有响应 {“@odata.context”:https://graph.micro

  • 您好,我目前正在处理HackerRank上的Java挑战,遇到了一个用我的代码无法解决的问题。 提示如下:, 给定一个字符串 s 和一个整数 k,完成该函数,以便它找到字典上长度 k 的最小和最大子字符串。 样本输入: welcometojava 3 示例输出: ava wel 最小和最大的子字符串仅基于第一个整数。因此,对于我的解决方案,我决定创建一个整数数组,并使用 String s 中每个可

  • TestCase 2: baseChars:['a','b'] 所需字符串长度:1 产出: 有人能帮忙吗?我已经把我的代码放在GitHub里了。如果您可以将我的实现更改为非递归,但保留函数返回类型,也将受到重视。

  • 我有一个像这样的mysql表 但是我无法用这个函数检索“成人”和“儿童”的值 错误日志显示变量被正确地传递给函数: 为什么此函数返回?