gpt4 book ai didi

Python 网页抓取被阻止

转载 作者:行者123 更新时间:2023-12-05 08:22:09 28 4
gpt4 key购买 nike

我想抓取德国房地产网站 immobilienscout24.de。我想下载给定 URL 的 HTML,然后离线使用 HTML。它不用于商业用途或出版,我不打算向网站发送垃圾邮件,它仅用于编码练习。我想编写一个 python 工具,自动下载给定 immobilienscout24.de 站点的 HTML。我曾尝试为此使用 beautifulsoup,但是,解析后的 H​​TML 不显示内容,而是询问我是否是机器人等,这意味着我的网络爬虫被检测到并被阻止(我可以在 Firefox 中正常访问该站点)。我已经设置了一个引用、一个延迟和一个用户代理。我还能做些什么来避免被检测到(即旋转代理、旋转用户代理、随机点击、其他未检测到的网络抓取工具……)?我曾尝试使用我的电话 IP,但得到了相同的结果。 GUI 网络抓取工具不是一个选项,因为我需要用 python 控制它。如果可能,请提供一些可实现的代码。到目前为止,这是我的代码:

import urllib.request
from bs4 import BeautifulSoup
import requests
import time
import numpy

url = "https://www.immobilienscout24.de/Suche/de/wohnung-mieten?sorting=2#"
req = urllib.request.Request(url, data=None, headers={ 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36' })
req.add_header('Referer', 'https://www.google.de/search?q=immoscout24)
delays = [3, 2, 4, 6, 7, 10, 11, 17]
time.sleep(numpy.random.choice(delays)) # I want to implement delays like this
page = urllib.request.urlopen(req)
soup = BeautifulSoup(page, 'html.parser')
print(soup.prettify)

username:~/Desktop$ uname -a
Linux username 5.4.0-52-generic #57-Ubuntu SMP Thu Oct 15 10:57:00 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

谢谢!

最佳答案

我是 Fredy ( https://github.com/orangecoding/fredy) 的开发者。我遇到了同样的问题。在深入研究这个问题后,我发现他们是如何检查你是否是机器人的。

首先他们设置了一个本地存储值。

localstorageAvailable: true

如果可用,他们会设置一个值:

testLocalStorage: 1

如果两者都有效,则会设置一个名为 reese84=xxx 的 cookie。这就是你想要的。如果您将此 cookie 与您的请求一起发送,它应该可以工作。我已经测试了几次。

注意:这还没有在 Fredy 中实现,因此 immoscout 仍然不能在实时源上工作,因为我目前正在重写代码。

关于Python 网页抓取被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64647954/

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