我想抓取德国房地产网站 immobilienscout24.de 的网页。我想下载给定 URL 的 HTML,然后离线使用该 HTML。它不适合商业用途或出版,我也不打算向该网站发送垃圾邮件,它只是用于编码练习。我想编写一个 python 工具,自动下载给定 immobilienscout24.de 网站的 HTML。我尝试使用 beautifulsoup 来实现此目的,但是,解析后的 HTML 不显示内容,而是询问我是否是机器人等,这意味着我的网络爬虫被检测到并被阻止(我可以在 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 https://github.com/orangecoding/fredy)。我遇到了同样的问题。深入研究这个问题后,我发现他们如何检查你是否是机器人。
首先,他们设置一个本地存储值。
localstorageAvailable: true
如果可用,他们会设置一个值:
testLocalStorage: 1
如果两者都有效,则会设置一个名为reese84=xxx
。
这就是你想要的。如果您随请求发送此 cookie,它应该可以工作。我已经测试过几次了。
注意:这尚未在 Fredy 中实现,因此 immoscout 仍然无法在实时源上工作,因为我目前正在重写代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)