gpt4 book ai didi

python - 在 Scrapy 中使用 start_request 和使用 cookie 在网站上工作的正确方法是什么

转载 作者:行者123 更新时间:2023-12-01 05:15:24 24 4
gpt4 key购买 nike

我在使用 cookie 抓取网站时遇到问题,我正在使用 Scrapy,但无法获取正确的数据

我需要指定网站的cookie,因为当我从浏览器登录时要求我选择一个城市,以显示相关信息
我尝试了一些可能的解决方案,但没有成功

class DmozSpider(Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"
]

def parse(self, response):
request_with_cookies = Request(url="http://www.example.com",
cookies={'currency': 'USD', 'country': 'UY'},callback=self.parse_page2)

def parse_page2(self, response):
sel = Selector(response)
print sel

我不知道在哪里可以找到这些函数,例如,我可以使用函数 start_request,

class MySpider(BaseSpider):
name = "spider"
allowed_domains = ""

def start_requests(self):
return [Request(url="http://www.example.com",
cookies={'currency': 'USD', 'country': 'UY'})]

我正在这样做,但我不确定我这样做是否正确我应该如何正确处理 start_requests 函数?我应该如何正确处理 request_with_cookies 函数?向 url 指定一些 cookie 的正确方法是什么?我应该把这个

name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = ["http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"]

在类里面当我使用start_requests或requests_with_cookies时?

最佳答案

尝试在请求中设置 headers 参数(cookie 也是 header ),如下所示:

Request(..., headers = {'Cookie': 'currency=USD&country=UY'}, ...)

您还可以尝试激活Requestmeta参数中的dont_merge_cookies选项:

Request(..., meta = {'dont_merge_cookies' : True}, ...)

这告诉爬虫忽略网站设置的其他 cookie,只使用这些 cookie,以防这些 cookie 可能被“合并”覆盖。

我认为这取决于网站的行为,其中哪一个会起作用,因此依次尝试它们,看看它们是否可以解决问题。

关于python - 在 Scrapy 中使用 start_request 和使用 cookie 在网站上工作的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com