【问题标题】:Can't read all HTML (Web Scraping) [duplicate]无法读取所有 HTML(网页抓取)[重复]
【发布时间】:2021-01-30 11:24:41
【问题描述】:

我正在尝试使用 BeautifulSoup 和 requests 库从呈现为 HTML 的表格中抓取数据,但我无法获取所有 HTML 代码。

我的代码如下。为简洁起见,我没有包含输出。

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError

url = 'https://www2.susep.gov.br/safe/Corretores/pesquisa.html'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}

#try:

#Opening 
req = Request(url, headers = headers)

#Open url
response = urlopen(req)

#Read HTML
print(response.read())

但代码未能从 HTML 中读取 <main class> 分区。页面上有一个表格存在于尚未阅读的页面中。

【问题讨论】:

  • 是JS动态创建的吗?
  • 我不能说,我在网络抓取方面还是个新手。你怎么能查到呢?
  • 查看页面,看看是否有脚本标签向 DOM 中注入了一些东西。或者查看页面并查看没有 JS 的元素是不可见的,就像您在此处所做的那样。您可以在禁用 JS 的情况下运行该站点并查看元素是否显示。如果数据是通过 AJAX 进入的,您可以查看开发工具中的请求选项卡,找出数据来自的端点在哪里,然后尝试自己点击它以绕过抓取 HTML。

标签: python html url web-scraping beautifulsoup


【解决方案1】:

数据是通过 JS 动态生成的。如果你进入浏览器并在开发工具中禁用 Javascript,你会看到网页基本上是空的。

您要么需要使用HTTP Trace 之类的工具(通过某些Web API)找出数据的获取位置,要么使用Selenium 之类的工具来运行Javascript 来加载HTML。

【讨论】:

    【解决方案2】:

    看起来angular.js 正在用于编译 html。也许尝试从浏览器中的检查工具中抓取?

    【讨论】:

      猜你喜欢
      • 2020-09-24
      • 2022-11-02
      • 2021-08-17
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多