【问题标题】:Why can I not access the Table containers in the html?为什么我无法访问 html 中的 Table 容器?
【发布时间】:2020-11-03 04:59:51
【问题描述】:

我对 Python 和 Web-Scraping 非常陌生。我正在尝试访问此网页上所有表格中的数据,但我不确定我的代码为什么不起作用。也许与 JavaScript 和 python 无法读取它有关。我的代码是:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests

headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
res = requests.get("https://www.mcmaster.com/cam-lock-fittings/material~aluminum/", headers=headers)

soup = BeautifulSoup(res.text, 'lxml')

item_containers = soup.findAll("div", {"class":"ItmTblCntnr PrsnttnTbl"})

print(len(item_containers))

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 它是 javascript 渲染的,因此您不会使用请求获取它。使用selenium

标签: javascript python web-scraping beautifulsoup


【解决方案1】:

也许您应该尝试使用 html.parser 和响应的内容属性:

soup = BeautifulSoup(res.content, "html.parser")

顺便问一下,你用的是哪个版本的美汤?在我的情况下,我必须使用 find_all 而不是 findAll。

【讨论】:

    【解决方案2】:

    我继续打开了您尝试使用代码访问的网页。当您在页面上看到表明它正在使用 JavaScript 的微调器动画时。当您使用 requests 库发出请求时,它不会执行任何 JavaScript。它只接收服务器发送的 html。在这种情况下,您尝试访问的表可能不存在于网页的初始页面加载中。所以你们中的一些人想要像这样抓取一个网页,你会使用一些浏览器自动化软件,比如 selenium。

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 2016-03-29
      • 1970-01-01
      • 2015-01-11
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多