【问题标题】:Html in browser different than the one requested in Python浏览器中的 Html 与 Python 中请求的不同
【发布时间】:2020-02-09 11:28:31
【问题描述】:

import requests

user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
headers = {'User-Agent': user_agent}
page = requests.get("https://sky.lea.moe/stats/PapaGordsmack/", headers=headers)
html_contents = page.text
print(html_contents)

我正在尝试从 sky.lea.moe 网站为特定用户进行网络抓取,但是当我请求 html 并打印它时,它与浏览器中显示的不同(在 chrome 上,查看页面源代码)。

我得到的是:https://pastebin.com/91zRw3vP 分析这个,它是关于检查浏览器和重定向的东西。有什么想法我应该怎么做?

【问题讨论】:

  • “检查浏览器和重定向”是什么意思?你知道问题是什么吗?你确定 HTML 没有被 JavaScript 修改吗?

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


【解决方案1】:

这是cloudflare的anti-dos保护,对停止抓取很有效。 JS 脚本通常会在几秒钟后重定向您。

Selenium 之类的东西可能是您绕过它的最佳选择,尽管您可能能够抓取 JS 文件并获取要重定向的 URL。您也可以尝试将您的推荐人伪装成此页面,这样它就会转到正确的页面。

【讨论】:

    【解决方案2】:

    浏览器确实不仅仅是下载网页。他们还下载其他资源、解析样式等。要抓取网页,建议使用像 Scrapy 这样的抓取库,它可以为您完成所有这些事情,并提供一个完整的库来轻松地从这些页面中提取信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多