selenium 是乙個用於web應用程式測試的工具。selenium測試直接執行在瀏覽器中,就像真正的使用者在操作一樣。利用這個庫去做爬蟲其目的就是模仿人的滑鼠和鍵盤操作,網上其實還有一些其他高效的爬蟲工具,那些爬蟲工具一般不是模擬人的滑鼠和鍵盤操作而出現的,一般都是獲取**的各種鏈結然後將有價值的資訊儲存下來,為什麼會用selenium這個庫去爬資料呢?原因是有很多**做了防止爬蟲的機制,例如很多**是用動態的js寫的,這樣傳統的爬蟲很難獲取資料,導致爬取失敗。而使用selenium去模擬人的滑鼠和鍵盤操作可以完全避免這個問題,但是問題也是存在的:即爬蟲的速度並不能算很高效。接下來我們就講一講怎麼使用這個庫進行爬蟲吧,我們以某東**為例。
python 直接用pip 命令安裝就可以了
pip install selenium
from selenium import webdriver
browser = webdriver.chrome()
browser = webdriver.firefox()
事實上沒有配置path
也是可以的,在**中指定即可
from selenium import webdriver
import time
def main():
b = webdriver.chrome(executable_path = chrome_driver)
b.get('')
time.sleep(5)
b.quit()
全部**如下:
from selenium import webdriver
from selenium.webdriver.common.keys import keys
import time
def get_good(driver, shang_pin_info):
try:
js_code='''
window.scrollto(0, 5000);
'''driver.execute_script(js_code)
time.sleep(2)
good_list = driver.find_elements_by_class_name('gl-item')
n = 1
for idx, good in enumerate(good_list):
good_url = good.find_element_by_css_selector('.p-img a').get_attribute('href')
#商品名稱
good_name = good.find_element_by_css_selector('.p-name em').text.replace("\n", "--")
# 商品**
good_price = good.find_element_by_class_name('p-price').text.replace("\n", ':')
# 評價人數
good_commit = good.find_element_by_class_name('p-commit').text.replace("\n", " ")
# 店鋪名稱
good_shop = good.find_element_by_xpath("//div[@class='p-shop']//a").get_attribute('title')
good_content = good_shop + ','+ good_name + ',' + good_price + ',' + good_commit + '\n'
print(str(idx) + ' ' + good_content)
with open(shang_pin_info + '.csv', 'a', encoding='utf-8') as f:
f.write(good_content)
if next_tag.get_attribute('class') == 'pn-next':
next_tag.click()
time.sleep(2)
get_good(driver, shang_pin_info)
time.sleep(10)
else:
except:
driver.close()
if __name__=='__main__':
# shang_pin = ['正大包子', '思念包子', '灣仔碼頭包子', '狗不理包子']
shang_pin = ['廣州酒家 包子', '安井 包子']
for sp in shang_pin:
with open(sp + '.csv', 'a', encoding='utf-8') as f:
f.write('店鋪,商品名稱,**,購買數量\n')
driver = webdriver.chrome()
driver.implicitly_wait(10)
driver.get('')
input_tag = driver.find_element_by_id('key')
input_tag.send_keys(sp)
input_tag.send_keys(keys.enter)
time.sleep(2)
get_good(driver, sp)
首先從main
程式入口看,我們的目標是獲取廣州酒家和安井包子的資訊
其實就是模仿我們人的操作在搜尋框中輸入廣州酒家
和安井包子
然後爬取資訊。
driver = webdriver.chrome() # 使用chrome作為我們的瀏覽器工具
driver.get('' # 進入京東**
input_tag = driver.find_element_by_id('key') # 找到輸入框的那個物件
input_tag.send_keys(sp) # 把想要搜尋的資訊寫入搜尋框
get_good(driver, sp) 進入搜尋結果頁面,獲取搜尋結果
這裡我們寫了乙個函式get_good()
裡面就是具體怎麼把資料獲取的功能,selenuium
其實就是需要看**的html
和css
然後根據各個特點獲取需要的元素,一般通過driver.find_element_by_***
獲取,可以通過id
獲取,也可以通過name
獲取,html
有很多標籤的屬性,都是可以通過不同的api
獲取的,具體的內容就不詳細介紹了。
python selenium模組爬取網頁
匯入模組 from selenium import webdriver 1.開啟瀏覽器 browser webdriver.chrome 2.訪問 browser.get 3.尋找標籤 尋找標籤 find element by id find element by class name find e...
python selenium被反爬系統識別的問題
在使用selenium這個壓箱底的反爬技能爬取boss時,踢到了鐵板。selenium也能被反爬系統識別出來,無法開啟鏈結。原因在於slenium開啟網頁時,chrome會顯示這個標籤條,使得伺服器識別為爬蟲。解決辦法就是設定options,隱藏標籤 如下 這時候再執行就解決問題了。參考文獻 1 3...
Python Selenium環境搭建
安裝python 設定 python 的環境變數 安裝目錄 安裝目錄 scripts 使用 pip安裝 selenium pip install selenium 安裝完python pip工具,在安裝目錄的 scripts 目錄下。在 dos下直接執行 pip install selenium 即...