gpt4 book ai didi

python - 使用 Python 抓取网页 JavaScript 页面

转载 作者:行者123 更新时间:2023-12-03 21:17:03 25 4
gpt4 key购买 nike

我正在尝试开发一个简单的网络抓取工具。我想提取没有 HTML 代码的文本。其实我实现了这个目标,但是我看到在一些加载JavaScript的页面中我没有得到很好的结果。

例如,如果一些 JavaScript 代码添加了一些文本,我就看不到它,因为当我调用

response = urllib2.urlopen(request)

我得到了没有添加的原始文本(因为 JavaScript 是在客户端执行的)。

所以,我正在寻找一些想法来解决这个问题。

最佳答案

2021 年 9 月编辑:phantomjs也不再维护
2017 年 12 月 30 日编辑:此答案出现在 Google 搜索的热门结果中,因此我决定对其进行更新。旧答案还在最后。
dryscape 不再维护,dryscape 开发人员推荐的库仅适用于 Python 2。我发现使用 Selenium 的 python 库和 Phantom JS 作为 Web 驱动程序足够快且容易完成工作。
安装后 Phantom JS ,请确保 phantomjs二进制文件在当前路径中可用:

phantomjs --version
# result:
2.1.1
#例子
举个例子,我用下面的 HTML 代码创建了一个示例页面。 ( link ):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Javascript scraping test</title>
</head>
<body>
<p id='intro-text'>No javascript support</p>
<script>
document.getElementById('intro-text').innerHTML = 'Yay! Supports javascript';
</script>
</body>
</html>
如果没有 javascript,它会说: No javascript support并使用 javascript: Yay! Supports javascript#Scraping 没有 JS 支持:
import requests
from bs4 import BeautifulSoup
response = requests.get(my_url)
soup = BeautifulSoup(response.text)
soup.find(id="intro-text")
# Result:
<p id="intro-text">No javascript support</p>
#Scraping 与 JS 支持:
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get(my_url)
p_element = driver.find_element_by_id(id_='intro-text')
print(p_element.text)
# result:
'Yay! Supports javascript'

您还可以使用 Python 库 dryscrape抓取 javascript 驱动的网站。
#Scraping 与 JS 支持:
import dryscrape
from bs4 import BeautifulSoup
session = dryscrape.Session()
session.visit(my_url)
response = session.body()
soup = BeautifulSoup(response)
soup.find(id="intro-text")
# Result:
<p id="intro-text">Yay! Supports javascript</p>

关于python - 使用 Python 抓取网页 JavaScript 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53532488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com