python?selenium.webdriver?爬取政策文件的實現(xiàn)
獲取文章鏈接
獲取中央人民政府網(wǎng)站鏈接,進入國務(wù)院政策文件庫,分為國務(wù)院文件和部門文件(發(fā)改委、工信部、交通運輸部、市場監(jiān)督局、商務(wù)部等)
搜索關(guān)鍵詞——汽車,即可得到按照 相關(guān)度 或者 時間 排列的政策文件。
批量爬取政策文件
批量獲取文件鏈接并存入列表
應(yīng)用selenium爬取文件信息
利用xpath定位鏈接、索引號、標(biāo)題、發(fā)文機關(guān)、發(fā)文字號、主題分類、成文日期、發(fā)布日期、文件內(nèi)容等信息。
右側(cè)通過光標(biāo)定位各部分信息,右鍵點擊 copy 并選擇 copy xpath即可復(fù)制xpath路徑。
完整代碼
from selenium import webdriver from urllib.error import HTTPError from selenium.webdriver.common.by import By #selenium新版本寫法 import warnings warnings.filterwarnings('ignore') """ 爬蟲國務(wù)院文件 傳入鏈接,返還鏈接內(nèi)的全部內(nèi)容,生成字典 """ def get_info(id,url): options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(options=options) link = {} driver.get(url) try: link['文章ID'] = id # 序列ID,從0—現(xiàn)有的文件數(shù) link['鏈接'] = url # 原文鏈接 #time.sleep(3) link['索引號'] = driver.find_element(By.XPATH, '/html/body/div[4]/div/div[2]/div[1]/table/tbody/tr/td/table/tbody/tr[1]/td[2]').text # 索引號 link['標(biāo)題'] = driver.find_element(By.XPATH, "/html/body/div[4]/div/div[2]/div[1]/table/tbody/tr/td/table/tbody/tr[3]/td[2]").text # 標(biāo)題 link['發(fā)文機關(guān)'] = driver.find_element(By.XPATH, "/html/body/div[4]/div/div[2]/div[1]/table/tbody/tr/td/table/tbody/tr[2]/td[2]").text # 發(fā)文機關(guān) link['發(fā)文字號'] = driver.find_element(By.XPATH, "/html/body/div[4]/div/div[2]/div[1]/table/tbody/tr/td/table/tbody/tr[4]/td[2]").text # 發(fā)文字號 link['主題分類'] = driver.find_element(By.XPATH, "/html/body/div[4]/div/div[2]/div[1]/table/tbody/tr/td/table/tbody/tr[1]/td[4]").text # 主題分類 link['成文日期'] = driver.find_element(By.XPATH, "/html/body/div[4]/div/div[2]/div[1]/table/tbody/tr/td/table/tbody/tr[2]/td[4]").text # 成文日期 link['發(fā)布日期'] = driver.find_element(By.XPATH, '/html/body/div[4]/div/div[2]/div[1]/table/tbody/tr/td/table/tbody/tr[4]/td[4]') # 發(fā)布日期 link['文件內(nèi)容'] = driver.find_element(By.XPATH,"http://*[@id='UCAP-CONTENT']").text # 內(nèi)容 with open('汽車/國務(wù)院文件/'+link['標(biāo)題']+'.txt','w',encoding='utf-8') as file: file.write(link['文件內(nèi)容']) except HTTPError: return None driver.quit() return link
數(shù)據(jù)處理
每次爬取單一文件信息并整理為dataframe,之后按行合并。
import pandas as pd df = pd.DataFrame() with open('link1.txt','r',encoding='utf-8') as f: links = f.readlines() for id,url in enumerate(links): url = url.strip('\n') print(url) result = get_info(id,url) df1 = pd.DataFrame.from_dict(result,'index').T df = pd.concat([df,df1],axis=0) df
導(dǎo)出為excel
df.to_excel('汽車行業(yè)政策文本研究.xlsx',index=False)
到此這篇關(guān)于python selenium.webdriver 爬取政策文件的實現(xiàn)的文章就介紹到這了,更多相關(guān)python selenium.webdriver 爬取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中處理字符串之endswith()方法的使用簡介
這篇文章主要介紹了Python中處理字符串之endswith()方法的使用,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05anaconda3安裝及jupyter環(huán)境配置全教程
這篇文章主要介紹了anaconda3安裝及jupyter環(huán)境配置全教程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08python中Pyqt5使用Qlabel標(biāo)簽進行視頻播放
這篇文章主要介紹了python中Pyqt5使用Qlabel實現(xiàn)標(biāo)簽進行視頻播放,QLabel是界面中的標(biāo)簽類,繼承自QFrame類,提供文本和圖像的顯示,是一種展示控件,下文相關(guān)內(nèi)容介紹需要的小伙伴可以參考一下2022-04-04PyCharm調(diào)用matplotlib繪圖時圖像彈出問題詳解
這篇文章主要給大家介紹了關(guān)于PyCharm調(diào)用matplotlib繪圖時圖像彈出問題的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家學(xué)習(xí)或者使用PyCharm具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-07-07關(guān)于Python中浮點數(shù)精度處理的技巧總結(jié)
雙精度浮點數(shù)(double)是計算機使用的一種數(shù)據(jù)類型,使用 64 位(8字節(jié)) 來存儲一個浮點數(shù)。下面這篇文章主要給大家總結(jié)介紹了關(guān)于Python中浮點數(shù)精度處理的技巧,需要的朋友可以參考借鑒,下面來一起看看吧。2017-08-08