基於Headless瀏覽器來訪問當當頁面商品資訊--程式碼示例
阿新 • • 發佈:2019-02-13
依賴庫說明
selenium: 相容不同瀏覽器的WebDriver
PhantomJS: 著名的無頭瀏覽器,不幸的是最近maintainer放棄繼續支援維護了,真是一件悲傷的事情。
開發語言: Python 3.6
功能描述
從噹噹商城中爬取某個商品的價格和名稱。這裡嘗試查詢”非暴力溝通“的圖書資訊,輸出價格和命名。
程式碼示例
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 10 14:41:01 2018
@author: chenjunfeng
"""
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import pandas as pd
import re
from selenium.webdriver.common.keys import Keys
driver = webdriver.PhantomJS(executable_path=r'D:/Program Files/phantomjs-2.1.1-windows/bin/phantomjs')
url='http://www.dangdang.com/'
driver.get(url)
input_node=driver.find_element_by_xpath('//*[@id="key_S"]' )
input_node.send_keys(r"非暴力溝通")
input_node.send_keys(Keys.ENTER)
# wait for a second
driver.implicitly_wait(1)
title_path = r'//*[@id="p23807861"]/p[1]/a/font'
price_path = r'//*[@id="p23807861"]/p[3]/span[1]'
title = driver.find_element_by_xpath(title_path).text
price = driver.find_element_by_xpath(price_path).text
print("title:" + title + ", price:" + price)
程式碼說明:
1. 這裡預設使用的phantomjs的路徑是內建寫死的,大家可以自行修改即可。
2. Firefox/Chrome中使用的xpath路徑是不一樣的,建議使用chrome
3. 在這裡使用的web element的節點是直接寫死的,大家可以參考使用相對xpath來進行大範圍的查詢和使用
## 總結
基於headless瀏覽器非常強大,從此沒有不能爬的資料了……