如何在 Python 中使用 Selenium 和 Beautifulsoup 解析网站?[关闭]
- 2025-03-10 08:52:00
- admin 原创
- 60
问题描述:
编程新手,想出了如何使用 Selenium 导航到我需要去的地方。我现在想解析数据,但不知道从哪里开始。有人能帮我指点一下,给我指明正确的方向吗?
任何帮助表示感谢 -
解决方案 1:
假设您位于要解析的页面上,Selenium 会将源 HTML 存储在驱动程序的page_source
属性中。然后,您可以按如下方式page_source
加载:BeautifulSoup
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://news.ycombinator.com')
html = driver.page_source
soup = BeautifulSoup(html)
for tag in soup.find_all('title'):
print(tag.text)
Hacker News
解决方案 2:
由于您的问题不是特别具体,这里有一个简单的例子。要做一些更有用的事情,请阅读 BS文档。您还可以在 SO 中找到大量 selenium (和 BS) 使用的示例。
from selenium import webdriver
from bs4 import BeautifulSoup
browser=webdriver.Firefox()
browser.get('http://webpage.com')
soup=BeautifulSoup(browser.page_source)
#do something useful
#prints all the links with corresponding text
for link in soup.find_all('a'):
print link.get('href',None),link.get_text()
解决方案 3:
您确定要使用 Selenium 吗?出于这个原因,我使用了PyQt4,它非常强大,您可以做任何您想做的事情。
我可以给你一个我刚刚写的示例代码,只需更改 url 就可以了:
#! /usr/bin/env python2.7
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from bs4 import BeautifulSoup
import sys, signal
class Browser(QWebView):
def __init__(self):
QWebView.__init__(self)
self.loadProgress.connect(self._progress)
self.loadFinished.connect(self._loadFinished)
self.frame = self.page().currentFrame()
def _progress(self, progress):
print str(progress) + "%"
def _loadFinished(self):
print "Load Finished"
html = unicode(self.frame.toHtml()).encode('utf-8')
soup = BeautifulSoup(html)
print soup.prettify()
self.close()
if __name__ == "__main__":
app = QApplication(sys.argv)
br = Browser()
url = QUrl('http://web site that can contain javascript.com')
br.load(url)
br.show()
if signal.signal(signal.SIGINT, signal.SIG_DFL):
sys.exit(app.exec_())
app.exec_()
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD