详解Selenium+PhantomJS+Python简单实现爬虫的功能
什么是Selenium、PhantomJS和Python
- Selenium是一个Web应用程序测试工具,可以用于自动化测试。
- PhantomJS是一个基于WebKit的无头的(即没有UI界面)浏览器,支持各种Web标准,如HTML,CSS和JavaScript。
- Python是一种高级编程语言,适合各个领域,包括Web开发和爬虫。
安装Selenium和PhantomJS
可以使用pip来安装Selenium和PhantomJS。
pip install selenium
pip install PhantomJS
导入Selenium和PhantomJS模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# 配置PhantomJS
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (X11; Ubuntu;" +
" Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0")
# 启动PhantomJS
browser = webdriver.PhantomJS(desired_capabilities=dcap)
使用Selenium和PhantomJS进行网络爬取
# 访问网页
browser.get("https://www.baidu.com/")
assert "百度一下" in browser.title
# 在搜索框中输入Python,然后按Enter键
elem = browser.find_element_by_name("wd")
elem.send_keys("Python")
elem.send_keys(Keys.RETURN)
# 打印搜索结果
print(browser.page_source)
# 关闭浏览器
browser.quit()
示例1:爬取豆瓣图书信息
from selenium import webdriver
from bs4 import BeautifulSoup
url = "https://book.douban.com/"
browser = webdriver.PhantomJS()
browser.get(url)
# 找到热门小说的链接
hot_novel_link = browser.find_element_by_xpath("//div[@class='section books-express']//a[@class='list-more']")
# 点击链接
hot_novel_link.click()
# 找到热门小说的所有信息
soup = BeautifulSoup(browser.page_source, "html.parser")
hot_novel = soup.select(".article .subject-list .subject-item")[0]
hot_novel_title = hot_novel.select(".info h2 a")[0].get_text()
hot_novel_rating = hot_novel.select(".info .star .rating_nums")[0].get_text()
# 打印热门小说的信息
print("热门小说:", hot_novel_title)
print("评分:", hot_novel_rating)
# 关闭浏览器
browser.quit()
示例2:搜索京东商城商品
from selenium import webdriver
from bs4 import BeautifulSoup
url = "https://www.jd.com/"
browser = webdriver.PhantomJS()
browser.get(url)
# 找到搜索框并输入要搜索的商品
search_box = browser.find_element_by_id("key")
search_box.send_keys("Python")
search_box.submit()
# 找到商品列表
soup = BeautifulSoup(browser.page_source, "html.parser")
items = soup.select(".gl-item")
# 打印搜索结果中所有商品的名称和价格
for item in items:
item_name = item.select('.p-name em')[0].get_text()
item_price = item.select('.p-price i')[0].get_text()
print(item_name, item_price)
# 关闭浏览器
browser.quit()
以上就是使用Selenium+PhantomJS+Python爬取数据的基本流程。需要注意的是,在大规模爬取之前,请了解目标网站的爬虫协议和法律法规,以避免不必要的纠纷。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Selenium+PhantomJS+python简单实现爬虫的功能 - Python技术站