我在使用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函数? 这是为网址指定一些cookie的正确方法吗? 我应该把这个
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = ["http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"]
当我使用start_requests或requests_with_cookies时,在类中?
答案 0 :(得分:2)
尝试在请求中设置headers
参数(Cookie也是标题),如下所示:
Request(..., headers = {'Cookie': 'currency=USD&country=UY'}, ...)
您还可以尝试激活dont_merge_cookies
的{{1}}参数中的meta
选项:
Request
这告诉抓取工具忽略网站设置的其他Cookie并仅使用这些Cookie - 如果这些可以被"合并"覆盖。
我认为这取决于网站的哪些行为会起作用,所以请依次尝试,看看他们是否解决了问题。