网站始终使用过时的浏览器对其进行标记

时间:2019-02-17 22:12:21

标签: python python-3.x python-requests

我正在尝试抓取网站https://anichart.net/,以便使用该信息从该信息中建立时间表。问题在于该站点始终检测到过时的浏览器(显示http://outdatedbrowser.com)。

    <div class=noscript>We\'re sorry but AniChart requires Javascript. 
    <br>Please enable Javascript or <a 
    href=http://outdatedbrowser.com>upgrade to a modern web browser</a>. 
    </div></noscript><div class="noscript modern-browser" style="display: 
    none">Sorry, AniChart requires a modern browser.<br>Please <a 
    href=http://outdatedbrowser.com>upgrade to a newer web browser</a>.</div>

我尝试了常规请求,还尝试了强制用户代理,如下所示。

    import requests

    self.url = 'https://anichart.net/Winter-2019'

    headers = {'User-agent': 'Chrome/72.0.3626.109'}

    self.page = requests.get(self.url, headers=headers)

    print(self.page.content)

我了解该网站使用javascript,除非我将其他工具或可能的Selenium与它一起使用,否则“请求”模块将不会引用该网站的javascript生成的部分。我的浏览器是最新的,因此不应返回过时的浏览器结果。

几天前这还算不错,但看起来他们确实只是在更新自己的网站,所以他们可能添加了一些阻止自动请求的内容。

编辑:

下面的硒代码:

    from selenium import webdriver

    url = 'https://anichart.net/Winter-2019'

    website = webdriver.Chrome()

    website.get(url)

    print(website.page_source)

    html_after_JS = website.execute_script("return document.body.innerHTML")

    print(html_after_JS)

1 个答案:

答案 0 :(得分:0)

问题不是浏览器检测。

requests仅渲染JavaScript(您似乎已经知道),并且当今大多数站点都使用前端Javascript库来渲染内容。还有更多网站使用Javascript检测来防止漫游器抓取页面...

您将需要使用Selenium之类的工具,它将打开您选择的无头“现代”浏览器,然后可以从那里抓取页面。但是您没有显示该代码,因此询问该代码可能更有意义?

或者更好的是,他们有一个API-https://github.com/AniList/ApiV2-GraphQL-Docs

  

AniList和AniChart网站本身在Api上运行,因此您可以在这些网站上进行的所有操作都可以通过Api进行。