1. 程式人生 > >使用Selenium抓取百度指數一

使用Selenium抓取百度指數一

輸入 指數 _id orm end span try res ()

抓百度指數的數據,比較簡單的演示:selenium+瀏覽器(我這是Firefox)的代碼。

代碼如下:

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

import time

# 此函數用於打開瀏覽器
def openbrowser():
global browser
url = "http://index.baidu.com/"#百度指數網站
browser = webdriver.Firefox()
browser.get(url)
# 點擊網頁的登錄按鈕
browser.find_element_by_xpath("/html/body/div/div[1]/div[2]/div[1]/div[4]/span/span").click()
time.sleep(3)
#傳入賬號密碼
account="你的百度賬號"
passwd="你百度賬號的密碼"
try:
browser.find_element_by_id("TANGRAM__PSP_4__userName").send_keys(account)
browser.find_element_by_id("TANGRAM__PSP_4__password").send_keys(passwd)
browser.find_element_by_id("TANGRAM__PSP_4__submit").click()
except:
browser.find_element_by_id("TANGRAM_12__password").send_keys(account)
browser.find_element_by_id("TANGRAM_12__userName").send_keys(passwd)
browser.find_element_by_id("TANGRAM_12__submit").click()

time.sleep(3)

def deal(name):
# 清空網頁輸入框
browser.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[1]/div/div[2]/form/input[3]").clear()
# 寫入需要搜索的百度指數
browser.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[1]/div/div[2]/form/input[3]").send_keys(name)
# 點擊搜索
try:
browser.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[1]/div/div[2]/div/span").click()
except:
browser.find_element_by_id("schsubmit").click()
time.sleep(2)
browser.execute_script("window.scrollTo(0,1000)") # 執行滾屏操作
browser.save_screenshot("baiduIndex.png") # 由於這裏圖片數據無法直接抓取,所以先截圖保存

 browser.close()

 browser.quit()

if __name__ == ‘__main__‘: # 主函數

openbrowser()

resultString=deal("黑客帝國",2018,5,25)

PS:代碼只是實現selenium的初步演示,沒有考慮異常及復雜的滾屏處理。另外,這裏使用XPath,可讀性較差,同時如果網站稍有改版,代碼可能需要進一步更新。

使用Selenium抓取百度指數一