我想使用Python从inspect元素获取数据。我可以使用BeautifulSoup下载源代码,但现在我需要来自网页的inspect元素的文本。如果你能告诉我怎么做,我真的很感激。
编辑: 通过检查元素我的意思是,在谷歌浏览器中,右键单击为我们提供了一个名为inspect元素的选项,该选项具有与该特定页面的每个元素相关的代码。我想提取代码/只是文本字符串。
答案 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
做这样的事情
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
回答executablesdriver = webdriver.PhantomJS("phantomjs-2.0.0-macosx/bin/phantomjs")
答案 3 :(得分:0)
BeautifulSoup可用于解析html文档,并提取您想要的任何内容。它不是为下载而设计的。你可以通过它的类和id找到你想要的元素。