cod*_*imo 2 python web-crawler scrapy
这对我来说只是一项爱好任务。我尝试通过 scapy 获取 booking.com 起始页 html。
\n\n def start_requests(self):\n print(\'step 1\')\n start_url = \'https://www.booking.com\'\n yield scrapy.Request(url=start_url, headers=self.headers, callback=self.step2)\n\n def step2(self, response):\n print(\'step 2\')\n print(response.status)\n print(response.headers)\n print(response.text)\n\nRun Code Online (Sandbox Code Playgroud)\n\n我在response.text 中得到一些奇怪的东西。这是响应的部分:
\n\n\n\n\nO\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdxa\xef\xbf\xbdX\xef\xbf\xbd\xef\xbf\xbd_\ \O^\'IM\xef\xbf\xbdl\xef\xbf\xbdF\xef\xbf\xbd\xef\xbf\xbd6(]1\xef\xbf\xbdr\xef\xbf\xbd\xef\xbf\ xbdLB>\xef\xbf\xbdO\xef\xbf\xbdg\xef\xbf\xbd#p.\xef\xbf\xbd:x\xef\xbf\xbd}8Rh\xef\xbf\xbd\xef\xbf\ xbd\xef\xbf\xbd\xd3\x93\xef\xbf\xbdQ\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd2h\xef\xbf\xbd\xef\xbf\xbd\xc6\ xbaU\xef\xbf\xbds\xef\xbf\xbd&\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd0{\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdl ] Y&\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdF9\xef\xbf\xbd@\xef\xbf\xbdWCR\xef\xbf\ xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd7\xef\xbf\xbd* *)JE-\xef\xbf\xbd-\xef\xbf\xbd\xef\xbf\xbd&\xef\xbf\xbd\xef\xbf\xbd\n )\xd4\xbcS\xef\xbf\xbd\xef \xbf\xbd\xef\xbf\xbd\xef\xbf\xbdy\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdz\xef\xbf\xbdR\xef\xbf\xbd@\xef\ xbf\xbdJ\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd1\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\ xbdN\xef\xbf\xbd\xef\xbf\xbd60\xef\xbf\xbd\xef\xbf\xbd&\'\xef\xbf\xbdlK\xef\xbf\xbdE\xef\xbf\xbd J\xef\
\nR.\xd2\x98\xc9\xa7\xef\xbf\xbde\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdS\xef\xbf\xbd\xef\xbf\xbd\xcf\xb5\xef\xbf\xbd\xef\xbf\xbdC\xef\xbf\xbd(\xef\xbf\xbd\xef\xbf\xbd6$\xef\xbf\xbd&\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdL2\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd{\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdB^\xef\xbf\xbd@\xef\xbf\xbd\xef\xbf\xbd~~[\'\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdT2\xef\xbf\xbd|"|\xef\xbf\xbd\xef\xbf\xbdX\xef\xbf\xbdL\n 5\xcb\x94-\xef\xbf\xbd\xd8\xae\xef\xbf\xbd Axbf \xbd8\xef\xbf\xbd\xef\xbf\xbdX\xef\xbf\xbd@5`\xef\xbf\xbdy*\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd:\ xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdO\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xe2\x8e\xbb\xef\xbf\xbd\xef\ xbf\xbd\xe2\x90\x8a\xef\xbf\xbd\xef\xbf\xbdR\xef\xbf\xbd\xef\xbf\xbd71\xe2\x94\xb4\xef\xbf\xbdA"\xe2\x89 \xa0\xef\xbf\xbdE\xd9\xb9\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd[\xef\xbf\xbd9B\xef\xbf\xbd\ xef\xbf\xbd6,\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd#\xef\xbf\xbd$0%(L\xef\xbf\xbd2\'\ xc2\xb0\xef\xbf\xbd\xef\xbf\xbd\xe2\x89\xa4\xe2\x89\xa5\xef\xbf\xbd&\xef\xbf\xbd\xc4\x8e\xef\xbf\xbdL\ xc8\x8b7\xef\xbf\xbd <\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd*p\xef\xbf\xbdABU\xef\xbf\xbd\xc4 \x81lK\xef\xbf\xbd=\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdi\xdd\x90\xef\xbf\xbd\'\xef\xbf\xbdb>I\xef\ xbf\xbd\'\xef\xbf\xbdJ\xef\xbf\xbd\xef\xbf\xbdo7\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\ xbf\xbde\xef\xbf\xbd|\n \xef\xbf\xbd\xe2\x89\xa5\xef\xbf\xbd4\xef\xbf\xbd\xef\xbf\xbdV\xc4\x8f\xef\xbf\xbdL\xef\xbf\xbd0\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xe2\x97 \x86\xef\xbf\xbdx\xd5\x92Pef\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd&l\xef\xbf\xbd\xef\xbf\xbdd{X \xef\xbf\xbdh\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd#\xef\xbf\xbd\xef\xbf\xbd q$\xef\xbf\xbdd\xef\xbf\ xbd$\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd?\xef\xbf\xbd:\xef\xbf\xbdM\xef\xbf\xbd\xef\xbf \xbd&jb{\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd0\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\ xbd\xef\xbf\xbd@\xef\xbf\xbd\n \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdS\xef\xbf\xbd_\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd4ztlS\xef\xbf\xbd\xef\xbf\xbd4\xef\xbf\xbd2^\xef\xbf\xbd\xef\xbf\ xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd5^\xef\xbf\xbd7\'\xef\xbf\xbd QFUH:\xef\xbf\xbd\xef\xbf\xbd7\xe2 \x96\x92\xef\xbf\xbd\xef\xbf\xbd\xe2\x94\x82 \xef\xbf\xbd\xe2\x94\x98\xef\xbf\xbd。\xef\xbf\xbd\xef\ xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xdd\x94\xef\xbf\xbd\xef\xbf\xbdM\xef\xbf\xbd\xe2\x90\x8b\ xef\xbf\xbd\xc8\xb5\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdA\xe2\x8e\xbd\xe2\x94\xbc:\xef\xbf \xbdZ\xef\xbf\xbd:\xef\xbf\xbd\xef\xbf\xbdF\xef\xbf\xbd\xef\xbf\xbd\xe2\x94\x9c\xef\xbf\xbdD\xef\xbf\ xbd-\xdf\xaf8*\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc7\xa0H*\xef \xbf\xbd\xef\xbf\xbd\xd8\x94\xe2\x94\x82\xef\xbf\xbdJ\xef\xbf\xbdC\xef\xbf\xbdoe2|\xef\xbf\xbd\xef\xbf\ xbd}xo\xef\xbf\xbd&\xef\xbf\xbd\xef\xbf\xbd"K\xef\xbf\xbd\xef\xbf\xbdj\xef\xbf\xbdy\xef\xbf\xbd<\xef \xbf\xbd%Z\xef\xbf\xbd;!M\xef\xbf\xbd\xef\xbf\xbdt \xdb\xa9~\xef\xbf\xbdR\xef\xbf\xbdcy2\xef\xbf\xbd >D\xef\xbf\xbdh\xef\xbf\xbdp\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd3\xef\xbf\xbd4\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbdx\xef\xbf\xbdy1\xef\xbf\xbd\xef\xbf\xbdT\\\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdIY\xef\xbf\xbd \xef\xbf\xbdF\xef\xbf\xbd(\xef\xbf\xbdE\xef\xbf\xbd\xef\xbf\xbd\xc3\xac\xef\xbf\xbd\xef\xbf\xbd[
这看起来像是假数据。每次的反应都不一样。当我尝试通过邮递员提出类似的请求时,一切正常。我收到代码 - 302 响应,其中包含一个可以正确打开网站的链接。\n我认为预订检测到我的代码是一个抓取工具,但我不明白如何进行。IP地址与邮递员相同,邮递员也忽略了javascript,所以我不知道会发生什么。请帮帮我。谢谢你!
\n您将获得原始压缩响应,这很奇怪,通常scrapy会自行处理 HTTP 会话和压缩数据,这要归功于CookiesMiddleware和HttpCompressionMiddleware,它们默认情况下都是启用的。Accept-Encoding您是否在代码中硬编码了?
# Content-Encoding set to gzip in response, since client supports it.
curl -H 'Accept-Encoding: gzip' -v https://www.booking.com 1>/dev/null 2>&1 | grep content-encoding
# It shows binary data, you can decompress with -c
curl -H 'Accept-Encoding: gzip' https://www.booking.com
curl -c -H 'Accept-Encoding: gzip' https://www.booking.com
# No Content-Encoding from response if the client don't want gzip.
curl -v https://www.booking.com 1>/dev/null 2>&1 | grep content-encoding
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |