如何使用Python获取网页元素检查器中的数据

6 投票
4 回答
41367 浏览
提问于 2025-04-18 15:16

我想用Python从网页的“检查元素”中获取数据。我可以用BeautifulSoup下载网页的源代码,但现在我需要从网页的“检查元素”中提取文本。如果你能告诉我怎么做,我会非常感激。

补充说明:我说的“检查元素”是指在谷歌浏览器中,右键点击会出现一个叫“检查元素”的选项,这里面有关于网页上每个元素的代码。我想提取这些代码或者只是它们的文本内容。

4 个回答

0

BeautifulSoup 是一个用来解析 HTML 文档的工具,可以帮助你提取你想要的内容。它并不是用来下载网页的。你可以通过元素的类名和 ID 来找到你需要的部分。

1

检查元素功能可以显示页面上的所有HTML内容,这和用 urllib 获取HTML是一样的。

你可以这样做:

import urllib
from bs4 import BeautifulSoup as BS

html = urllib.urlopen(URL).read()

soup = BS(html)

print soup.findAll(tag_name).get_text()
2

我想更新一下Jason S.的回答。我在OS X上无法启动phantomjs。

driver = webdriver.PhantomJS()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File     "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/phantomjs/webdriver.py", line 50, in __init__
self.service.start()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/phantomjs/service.py", line 74, in start
raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
selenium.common.exceptions.WebDriverException: Message: Unable to start phantomjs with ghostdriver.

这个问题通过这里的回答解决了,方法是下载可执行文件

driver = webdriver.PhantomJS("phantomjs-2.0.0-macosx/bin/phantomjs")
9

如果你想用Python自动获取一个网页,并且这个网页上有JavaScript代码需要运行,你可以试试Selenium。它可以自动控制一个网页浏览器,甚至是那种不需要显示窗口的浏览器,比如PhantomJS,这样你就不需要打开一个窗口。

为了获取网页的HTML内容,你需要执行一些JavaScript代码。下面是一个简单的示例代码,你可以根据自己的需要进行修改:

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get("http://google.com")

# This will get the initial html - before javascript
html1 = driver.page_source

# This will get the html after on-load javascript
html2 = driver.execute_script("return document.documentElement.innerHTML;")

注意1:如果你想获取特定的元素,你其实有几种选择——可以在Python中解析HTML,或者写更具体的JavaScript代码来返回你想要的内容。

注意2:如果你需要从Chrome的工具中获取一些特定的信息,而不仅仅是动态生成的HTML,你就需要找到一种方法直接连接到Chrome。这个是没办法绕开的。

撰写回答