我想从mobile.de抓取一些个人使用的广告。
我正在将Python 3.6与请求库一起使用,但遇到一些机器人检查问题。我如何从他们的网站通过此网关?
import requests
from bs4 import BeautifulSoup
r = requests.get("https://www.mobile.de/?lang=en")
bs = BeautifulSoup(r.content, 'lxml')
print(bs)
这部分代码向我显示以下内容:
<p>To continue your browser has to accept cookies and has to have JavaScript enabled.</p>
在哪里可以找到我需要解决的逻辑以通过验证?
答案 0 :(得分:1)
收到意外内容的原因是您没有有效的标题。就像@afit所说的。但是To continue your browser has to accept cookies and has to have JavaScript enabled.
是有道理的,因为如果不启用JavaScript,则不会加载全部内容。
注意:我建议您使用selenium
来执行此操作。 requests_html
由于在呈现时缺少合适的标题而无法成功访问网站。顺便说一句,如果您想访问JavaScript内的URL并获取内容,那将是一项艰巨的任务。
from bs4 import BeautifulSoup
from selenium import webdriver
dr = webdriver.Chrome()
dr.get("https://www.mobile.de/?lang=en")
bs = BeautifulSoup(dr.page_source,"lxml")
答案 1 :(得分:0)
他们可以通过许多不同的方式来执行此操作,从琐碎到棘手再到大规模绕过。一种方法是修改您的User-Agent
,因为他们最简单的方法是基于此拒绝请求。
r = requests.get(
'https://yoursite.com',
headers = {
'User-Agent': 'Popular browser\'s user-agent',
}
)
从您显示的示例URL来看,它看起来不像,但是他们可能希望在 到达放置Cookie的网站上的另一个页面后,该URL被点击。如果是这种情况,请提出更早的请求,并在您的requests
调用中提供cookie。