Python请求-“要继续,您的浏览器必须接受Cookie并必须启用JavaScript。”

时间:2018-12-24 22:49:51

标签: python web-scraping python-requests

我想从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>

在哪里可以找到我需要解决的逻辑以通过验证?

2 个答案:

答案 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。