📜  “scrapy shell”传递 cookie 来获取 - Python (1)

📅  最后修改于: 2023-12-03 15:21:25.376000             🧑  作者: Mango

Scrapy Shell传递Cookie来获取 - Python

在进行Web爬虫的开发时,我们经常需要在登录后才能访问一些页面以获取有用的数据。Cookie是用于进行Web身份验证的一种机制,通常在运行Web爬虫时会用到。

在Scrapy中,我们可以使用scrapy shell命令来进行简单的调试,包括测试XPath选择器、正则表达式、获取请求和响应等。本文将介绍如何使用scrapy shell命令传递cookie来获取特定页面的内容。

获取Cookie

在进行Cookie传递之前,我们需要先获取Cookie。这可以通过登录Web应用程序并查看HTTP响应头来实现。

在使用浏览器登录Web应用程序后,打开浏览器的开发工具,选择“网络”选项卡,然后选择第一个请求。我们可以看到HTTP响应头中的Cookie信息。

例如,在登录GitHub网站后,我们可以通过检查请求响应头来获取Cookie。可以看到如下响应头:

HTTP/1.1 200 OK
Date: Mon, 22 Nov 2021 08:15:56 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: GitHub.com
Status: 200 OK
Cache-Control: no-cache
Set-Cookie: _octo=GH1.1.21162397.1637571356; Path=/; Domain=github.com; Expires=Thu, 22 Nov 2024 08:15:56 GMT; Secure; SameSite=Lax
Set-Cookie: logged_in=no; Domain=github.com; Path=/; Expires=Tue, 22 Nov 2022 08:15:56 GMT; HttpOnly; Secure; SameSite=Lax

在这个响应头中,我们可以看到两个Cookie:_octologged_in。这些值可以用于后续的请求。

使用Cookie

一旦我们成功获取了Cookie,我们就可以在scrapy shell中使用它们了。我们只需要通过headers参数传递一个Cookie字典即可。

例如,在登录GitHub后,我们可以使用以下代码片段获取个人仓库页面:

scrapy shell https://github.com/ -c "cookie={\"_octo\": \"GH1.1.21162397.1637571356\", \"logged_in\": \"no\"}"

在这个例子中,-c参数用于传递Cookie,将值存储在cookie变量中。最终,在Scrapy Shell中执行以上代码,我们应该可以看到一个成功的响应。

In [1]: response.status
Out[1]: 200

我们现在可以使用XPath选择器或正则表达式来提取所需的数据。

结论

在Scrapy中,我们可以使用scrapy shell命令来进行简单的调试,包括测试XPath选择器、正则表达式、获取请求和响应等。使用Cookie很容易,只需在scrapy shell命令中传递它们即可。

希望这篇文章对你在Web爬虫开发中有所帮助。如果有任何问题或建议,请在下面的评论中分享。