首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >网站总是使用过时的浏览器来标记它

网站总是使用过时的浏览器来标记它
EN

Stack Overflow用户
提问于 2019-02-18 06:12:21
回答 1查看 514关注 0票数 0

我正在尝试抓取网站的https://anichart.net/,以便使用这些信息来建立一个时间表。问题是该站点总是检测到过时的浏览器(显示http://outdatedbrowser.com)。

代码语言:javascript
运行
复制
    <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>

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

代码语言:javascript
运行
复制
    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,请求模块不会引用该站点的javascript生成部分,除非我使用其他工具或潜在的Selenium。我的浏览器是最新的,所以这不应该返回过时的浏览器结果。

这在几天前还工作得很好,但看起来他们只是更新了他们的网站,所以他们可能添加了一些阻止网站自动请求的东西。

编辑:

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)
EN

Stack Overflow用户

发布于 2019-02-18 06:18:09

问题不在于浏览器检测。

requests只是简单地呈现JavaScript (您似乎已经知道了),而且现在大多数网站都使用前端Javascript库来呈现内容。还有一些网站使用Javascript检测来防止机器人抓取页面……

相反,您将需要使用Selenium这样的工具,它将打开一个您选择的无头的“现代”浏览器,您可以从那里抓取页面。但是您还没有展示这些代码,所以问一下这个问题可能更有意义?

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

AniList & AniChart网站本身在Api上运行,所以你可以在这些网站上做的所有事情,都可以通过Api来完成。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54738176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档