如何使用Python从网页的inspect元素获取数据

时间:2014-07-30 01:11:50

标签: python html extract

我想使用Python从inspect元素获取数据。我可以使用BeautifulSoup下载源代码,但现在我需要来自网页的inspect元素的文本。如果你能告诉我怎么做,我真的很感激。

编辑: 通过检查元素我的意思是,在谷歌浏览器中,右键单击为我们提供了一个名为inspect元素的选项,该选项具有与该特定页面的每个元素相关的代码。我想提取代码/只是文本字符串。

4 个答案:

答案 0 :(得分:4)

如果您想以运行Javascript的方式从Python自动获取网页,您应该查看Selenium。它可以自动驱动Web浏览器(甚至是无头网络浏览器,如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本身。没办法。

答案 1 :(得分:1)

Inspect元素显示页面的所有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 :(得分:1)

我想更新Jason S.的答案。我无法在OS X上启动幻像

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.

通过下载here

回答executables
driver = webdriver.PhantomJS("phantomjs-2.0.0-macosx/bin/phantomjs")

答案 3 :(得分:0)

BeautifulSoup可用于解析html文档,并提取您想要的任何内容。它不是为下载而设计的。你可以通过它的类和id找到你想要的元素。