【发布时间】:2023-02-06 06:36:12
【问题描述】:
在抓取以下网站 (https://www.middletownk12.org/Page/4113) 时,此代码无法找到表行(获取员工姓名、电子邮件和部门),即使当我使用 Chrome 开发人员工具时它们是可见的。 soup 对象的可读性不足以定位具有所需信息的 tr 标签。
import requests
from bs4 import BeautifulSoup
url = "https://www.middletownk12.org/Page/4113"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
print(response.text)
我没有机会使用不同的库,例如 bs4、request 和 selenium。我也没有机会尝试使用 selenium 的 Css 选择器和 XPATH。无法找到 Tr 元素。
【问题讨论】:
-
那张联系方式表是用Javascript填的后页面已加载。该内容不存在于页面的 HTML 中,您将无法使用
requests看到它。您将需要 (a) 通过 Playright 或 Selenium 等工具使用支持 Javascript 的实际浏览器,或者 (b) 在加载页面时检查网络日志,看看您是否可以确定填充该数据的请求(然后尝试自己取)。 -
试试
print(soup.prettify()) -
您可能想尝试通过浏览器运行 python selenium 包,以便在 javascript 渲染后看到页面。
标签: python beautifulsoup python-requests selenium-chromedriver