这是我读过的页面:
<html>
<head>
<script type="text/javascript">
document.write("Hello World")
</script>
</head>
<body>
</body>
</html>
正如您所看到的,使用javascript在HTML页面上添加Hello World
,当我使用HTML解析器(如BeautifulSoup
解析它)时,它无法解析{{1} ,我可以解析客户端真正看到的实际结果....?感谢。
答案 0 :(得分:10)
我在python中编写web scraper时遇到了类似的问题,我发现Selenium Web Driver与BeautifulSoup结合使用非常有用。代码最终看起来像这样:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.yoursite.com")
soup = BeautifulSoup(browser.page_source, "html.parser")
...
使用Selenium WebDriver,还可以在功能上“等待某个DOM元素加载”,这使得javascript元素的计时也更容易。
答案 1 :(得分:3)
为了正确表示在javascript操作之后DOM的样子,你必须实际执行javascript。这必须通过具有javascript引擎和文档的DOM(而不是文本/标记)表示的东西来完成 - 通常是浏览器。