[Python從零到壹] 十.網絡爬蟲之Selenium爬取在線百科知識詳解(NLP語料構造必備) | 【生長吧!Python

      網友投稿 1448 2025-04-01

      前一篇文章講述了Selenium基礎技術,涉及基礎入門、元素定位、常用方法和屬性、鼠標操作、鍵盤操作和導航控制。本文將結合具體實例進行深入地分析,通過三個基于Selenium技術的爬蟲,爬取Wikipedia、百度百科和互動百科消息盒的例子,從實際應用出發來學習利用。基礎性文章,希望對您有所幫助。

      在線百科是基于Wiki技術的、動態的、免費的、可自由訪問和編輯的多語言百科全書的Web2.0知識庫系統。它是互聯網中公開的、最大數量的用戶生成的知識庫,并且具有知識面覆蓋度廣、結構化程度高、信息更新速度快和開放性好等優勢。其中被廣泛使用的三大在線百科包括Wikipedia、百度百科和互動百科。

      文章目錄

      一.三大在線百科

      1.Wikipedia

      2.百度百科

      3.互動百科

      二.Selenium爬取百度百科知識

      1.網頁分析

      2.代碼實現

      三.Selenium爬取Wikipedia

      1.網頁分析

      2.代碼實現

      四.Selenium爬取互動百科

      1.網頁分析

      2.代碼實現

      五.本章小結

      -:

      https://github.com/eastmountyxz/Python-zero2one

      前文賞析:

      第一部分 基礎語法

      [Python從零到壹] 一.為什么我們要學Python及基礎語法詳解

      [Python從零到壹] 二.語法基礎之條件語句、循環語句和函數

      [Python從零到壹] 三.語法基礎之文件操作、CSV文件讀寫及面向對象

      第二部分 網絡爬蟲

      [Python從零到壹] 四.網絡爬蟲之入門基礎及正則表達式抓取博客案例

      [Python從零到壹] 五.網絡爬蟲之BeautifulSoup基礎語法萬字詳解

      [Python從零到壹] 六.網絡爬蟲之BeautifulSoup爬取豆瓣TOP250電影詳解

      [Python從零到壹] 七.網絡爬蟲之Requests爬取豆瓣電影TOP250及CSV存儲

      [Python從零到壹] 八.數據庫之MySQL基礎知識及操作萬字詳解

      [Python從零到壹] 九.網絡爬蟲之Selenium基礎技術萬字詳解

      [Python從零到壹] 十.Selenium爬取在線百科知識萬字詳解(NLP語料構造必備技能)

      一.三大在線百科

      隨著互聯網和大數據的飛速發展,我們需要從海量信息中挖掘出有價值的信息,而在收集這些海量信息過程中,通常都會涉及到底層數據的抓取構建工作,比如多源知識庫融合、知識圖譜構建、計算引擎建立等。其中具有代表性的知識圖譜應用包括谷歌公司的Knowledge Graph、Facebook推出的實體搜索服務(Graph Search)、百度公司的百度知心、搜狗公司的搜狗知立方等。這些應用的技術可能會有所區別,但相同的是它們在構建過程中都利用了Wikipedia、百度百科、互動百科等在線百科知識。所以本章將教大家分別爬取這三大在線百科。

      百科是指天文、地理、自然、人文、宗教、信仰、文學等全部學科的知識的總稱,它可以是綜合性的,包含所有領域的相關內容;也可以是面向專業性的。接下來將介紹常見的三大在線百科,它們是信息抽取研究的重要語料庫之一。

      1.Wikipedia

      “Wikipedia is a free online encyclopedia with the aim to allow anyone to edit articles.” 這是Wikipedia的官方介紹。Wikipedia是一個基于維基技術的多語言百科全書協作計劃,用多種語言編寫的網絡百科全書。Wikipedia一詞取自于該網站核心技術“Wiki”以及具有百科全書之意的“encyclopedia”共同創造出來的新混成詞“Wikipedia”,接受任何人編輯。

      在所有在線百科中,Wikipedia知識準確性最好,結構化最好,但是Wikipedia本以英文知識為主,涉及的中文知識很少。在線百科頁面通常包括:Title(標題)、Description(摘要描述)、InfoBox(消息盒)、Categories(實體類別)、Crosslingual Links(跨語言鏈接)等。Wikipedia中實體“黃果樹瀑布”的中文頁面信息如圖1所示。

      圖1所示的Wikipedia信息主要包括:

      文章標題(Article Title):唯一標識一篇文章(除存在歧義的頁面),即對應一個實體,對應圖中的“黃果樹瀑布”。

      摘要(Abstract):通過一段或兩段精簡的信息對整篇文章或整個實體進行描述,它具有重要的使用價值。

      自由文本(Free Text):自由文本包括全文本內容和部分文本內容。全文本內容是描述整篇文章的所有文本信息,包括摘要信息和各個部分的信息介紹。部分文本內容是描述一篇文章的部分文本信息,用戶可以自定義摘取。

      分類標簽(Category Label):用于鑒定該篇文章所屬的類型,如圖中“黃果樹瀑布”包括的分類標簽有“國家5A級旅游景區”、“中國瀑布”、“貴州旅游”等。

      消息盒(InfoBox):又稱為信息模塊或信息盒。它采用結構化形式展現網頁信息,用于描述文章或實體的屬性和屬性值信息。消息盒包含了一定數量的“屬性-屬性值”對,聚集了該篇文章的核心信息,用于表征整個網頁或實體。

      2.百度百科

      百度百科是百度公司推出的一部內容開放、自由的網絡百科全書平臺。截至2017年4月,百度百科已經收錄了超過1432萬的詞條,參與詞條編輯的網友超過610萬人,幾乎涵蓋了所有已知的知識領域。百度百科旨在創造一個涵蓋各領域知識的中文信息收集平臺。百度百科強調用戶的參與和奉獻精神,充分調動互聯網用戶的力量,匯聚廣大用戶的頭腦智慧,積極進行交流和分享。同時,百度百科實現與百度搜索、百度知道的結合,從不同的層次上滿足用戶對信息的需求。

      與Wikipedia相比,百度百科所包含中文知識最多最廣,但是準確性相對較差。百度百科頁面也包括:Title(標題)、Description(摘要描述)、InfoBox(消息盒)、Categories(實體類別)、Crosslingual Links(跨語言鏈接)等。圖2為百度百科“Python”網頁知識,該網頁的消息盒為中間部分,采用鍵值對(Key-value Pair)的形式,比如“外文名”對應的值為“Python”,“經典教材”對應的值為“Head First Python”等。

      3.互動百科

      互動百科(www.baike.com)是中文百科網站的開拓與領軍者,致力于為數億中文用戶免費提供海量、全面、及時的百科信息,并通過全新的維基平臺不斷改善用戶對信息的創作、獲取和共享方式。截止到2016年年底,互動百科已經發展成為由超過1100萬用戶共同打造的擁有1600萬詞條、2000萬張圖片、5萬個微百科的百科網站,新媒體覆蓋人群1000余萬人,手機APP用戶超2000萬。

      相對于百度百科而言,互動百科的準確性更高、結構化更好,在專業領域上知識質量較高,故研究者通常會選擇互動百科作為主要語料之一。圖3顯示的是互動百科的首頁。

      互動百科的信息分為兩種形式存儲,一種是百科中結構化的信息盒,另一種是百科正文的自由文本。對于百科中的詞條文章來說,只有少數詞條含有結構化信息盒,但所有詞條均含有自由文本。信息盒是采用結構化方式展現詞條信息的形式,一個典型的百科信息盒展示例子如圖4,顯示了Python的InfoBox信息,采用鍵值對的形式呈現,比如Python的“設計人”為“Guido van Rossum”。

      下面分別講解Selenium技術爬取三大在線百科的消息盒,三大百科的分析方法略有不同。Wikipedia先從列表頁面分別獲取20國集團(簡稱G20)各國家的鏈接,再依次進行網頁分析和信息爬取;百度百科調用Selenium自動操作,輸入各種編程語言名,再進行訪問定位爬取;互動百科采用分析網頁的鏈接url,再去到不同的景點進行分析及信息抓取。

      二.Selenium爬取百度百科知識

      百度百科作為最大的中文在線百科或中文知識平臺,它提供了各行各業的知識,可以供研究者從事各方面的研究。雖然詞條的準確率不是最好,但依然可以為從事數據挖掘、知識圖譜、自然語言處理、大數據等領域的學者提供很好的知識平臺。

      1.網頁分析

      本小節將詳細講解Selenium爬取百度百科消息盒的例子,爬取的主題為10個國家5A級景區,其中景區的名單定義在TXT文件中,然后再定向爬取它們的消息盒信息。其中網頁分析的核心步驟如下:

      (1) 調用Selenium自動搜索百度百科關鍵詞

      首先,調用Selenium技術訪問百度百科首頁,網址為“https://baike.baidu.com”,圖5為百度百科首頁,其頂部為搜索框,輸入相關詞條如“故宮”,點擊“進入詞條”,可以得到故宮詞條的詳細信息。

      然后,在瀏覽器鼠標選中“進入詞條”按鈕,右鍵鼠標點擊“審查元素”,可以查看該按鈕對應的HTML源代碼,如圖6所示。注意,不同瀏覽器查看網頁控件或內容對應源代碼的稱呼是不同的,圖中使用的是360安全瀏覽器,稱呼為“審查元素”,而Chrome瀏覽器稱為“檢查”,QQ瀏覽器稱為“檢查”等。

      “進入詞條”對應的HTML核心代碼如下所示:

      幫助
      ...

      調用Selenium函數可以獲取輸入框input控件。

      find_element_by_xpath("http://form[@id=‘searchForm’]/input")

      然后自動輸入“故宮”,獲取按鈕“進入詞條”并自動點擊,這里采用的方法是在鍵盤上輸入回車鍵即可訪問“故宮”界面,核心代碼如下所示:

      driver.get("http://baike.baidu.com/") elem_inp=driver.find_element_by_xpath("http://form[@id='searchForm']/input") elem_inp.send_keys(name) elem_inp.send_keys(Keys.RETURN)

      (2) 調用Selenium訪問“故宮”頁面并定位消息盒

      第一步完成后,進入“故宮”頁面然后找到中間消息盒InfoBox部分,右鍵鼠標并點擊“審查元素”,返回結果如圖7所示。

      消息盒核心代碼如下:

      消息盒主要采用<屬性-屬性值>的形式存儲,詳細概括了“故宮”實體的信息。例如,屬性“中文名稱”對應值為“北京故宮”,屬性“外文名稱”對應值為“Fobidden City”。對應的HTML部分源代碼如下。

      中文名稱
      北京故宮
      外文名稱
      Forbidden City
      類  別
      世界文化遺產、歷史古跡、歷史博物館
      ...
      建筑面積
      約15萬平方米
      著名景點
      三大殿、乾清宮、養心殿、皇極殿
      ...

      整個消息盒位于< div class=“basic-info J-basic-info cmn-clearfix” >標簽中,接下來是< dl >、< dt >、< dd >一組合HTML標簽,其中消息盒div布局共包括兩個< dl >…布局,一個是記錄消息盒左邊部分的內容,另一個< dl >記錄了消息盒右部分的內容,每個< dl >標簽里再定義屬性和屬性值,如圖8所示。

      注意:使用dt、dd最外層必須使用dl包裹,< dl >標簽定義了定義列表(Definition List),< dt >標簽定義列表中的項目,< dd >標簽描述列表中的項目,此組合標簽叫做表格標簽,與table表格組合標簽類似。

      接下來調用Selenium擴展包的find_elements_by_xpath()函數分別定位屬性和屬性值,該函數返回多個屬性及屬性值集合,再通過for循環輸出已定位的多個元素值。代碼如下:

      elem_name=driver.find_elements_by_xpath("http://div[@class='basic-info J-basic-info cmn-clearfix']/dl/dt") elem_value=driver.find_elements_by_xpath("http://div[@class='basic-info J-basic-info cmn-clearfix']/dl/dd") for e in elem_name: print(e.text) for e in elem_value: print(e.text)

      此時,使用Selenium技術爬取百度百科國家5A級景區的分析方法就講解完了,下面是這部分完整的代碼及一些難點。

      2.代碼實現

      注意,接下來我們嘗試定義多個Python文件相互調用實現爬蟲功能。完整代碼包括兩個文件,即:

      test10_01_baidu.py:定義了主函數main并調用getinfo.py文件

      getinfo.py:通過getInfobox()函數爬取消息盒

      test10_01_baidu.py

      # -*- coding: utf-8 -*- """ test10_01_baidu.py 定義了主函數main并調用getinfo.py文件 By:Eastmount CSDN 2021-06-23 """ import codecs import getinfo #引用模塊 #主函數 def main(): #文件讀取景點信息 source = open('data.txt','r',encoding='utf-8') for name in source: print(name) getinfo.getInfobox(name) print('End Read Files!') source.close() if __name__ == '__main__': main()

      [Python從零到壹] 十.網絡爬蟲之Selenium爬取在線百科知識詳解(NLP語料構造必備) | 【生長吧!Python】

      在代碼中調用“import getinfo”代碼導入getinfo.py文件,導入之后就可以在main函數中調用getinfo.py文件中的函數和屬性,接著我們調用getinfo.py文件中的getInfobox()函數,執行爬取消息盒的操作。

      getinfo.py

      # coding=utf-8 """ getinfo.py:獲取信息 By:Eastmount CSDN 2021-06-23 """ import os import codecs import time from selenium import webdriver from selenium.webdriver.common.keys import Keys #getInfobox函數: 獲取國家5A級景區消息盒 def getInfobox(name): try: #訪問百度百科并自動搜索 driver = webdriver.Firefox() driver.get("http://baike.baidu.com/") elem_inp = driver.find_element_by_xpath("http://form[@id='searchForm']/input") elem_inp.send_keys(name) elem_inp.send_keys(Keys.RETURN) time.sleep(1) print(driver.current_url) print(driver.title) #爬取消息盒InfoBox內容 elem_name=driver.find_elements_by_xpath("http://div[@class='basic-info J-basic-info cmn-clearfix']/dl/dt") elem_value=driver.find_elements_by_xpath("http://div[@class='basic-info J-basic-info cmn-clearfix']/dl/dd") """ for e in elem_name: print(e.text) for e in elem_value: print(e.text) """ #構建字段成對輸出 elem_dic = dict(zip(elem_name,elem_value)) for key in elem_dic: print(key.text,elem_dic[key].text) time.sleep(5) return except Exception as e: print("Error: ",e) finally: print('\n') driver.close()

      比如爬取過程Firefox瀏覽器會自動搜索“故宮”頁面,如下圖所示:

      最終輸出結果如下圖所示:

      內容如下:

      https://baike.baidu.com/item/北京故宮 北京故宮_百度百科 https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E6%95%85%E5%AE%AB 北京故宮_百度百科 中文名 北京故宮 地理位置 北京市東城區景山前街4號 [91] 開放時間 4.1-10.31:08:20-17:00(停止售票16:00,最晚入園16:10) ;11.1-3.31:08:30-16:30(停止售票15:30,最晚入園15:40) ;除法定節假日外每周一閉館 [6] [91] 景點級別 AAAAA級 門票價格 60元旺季/40元淡季 [7] 占地面積 72萬平方米(建筑面積約15萬平方米) 保護級別 世界文化遺產;第一批全國重點文物保護單位 批準單位 聯合國教科文組織;中華人民共和國國務院 批 號 III-100 主要藏品 清明上河圖、乾隆款金甌永固杯、酗亞方樽 別 名 紫禁城 [8] 官方電話 010-85007057 [92]

      Python運行結果如下所示,其中data.txt文件中包括了常見的幾個景點。

      北京故宮

      黃果樹瀑布

      頤和園

      八達嶺長城

      明十三陵

      恭王府

      北京奧林匹克公園

      黃山

      上述代碼屬性和屬性值通過字典進行組合輸出的,核心代碼如下:

      elem_dic = dict(zip(elem_name,elem_value)) for key in elem_dic: print(key.text,elem_dic[key].text)

      同時,讀者可以嘗試調用本地的無界面瀏覽器PhantomJS進行爬取的,調用方法如下:

      webdriver.PhantomJS(executable_path="C:\...\phantomjs.exe")

      課程作業:

      三.Selenium爬取Wikipedia

      1.網頁分析

      (1) 從G20列表頁面中獲取各國超鏈接

      20國集團列表網址如下,Wikipedia采用國家英文單詞首寫字母進行排序,比如“Japan”、“Italy”、“Brazil”等,每個國家都采用超鏈接的形式進行跳轉。

      https://en.wikipedia.org/wiki/Category:G20_nations

      首先,需要獲取20個國家的超鏈接,然后再去到具體的頁面進行爬取。選中一個國家的超鏈接,比如“China”,右鍵鼠標并點擊“檢查”按鈕,可以獲取對應的HTML源代碼,如下所示。

      其中超鏈接位于< div class=“mw-category-group” >布局的< ul >< li >< a >節點下,對應代碼:

      C

      ...
      ...
      ...

      調用Selenium的find_elements_by_xpath()函數獲取節點class屬性為“mw-category-group”的超鏈接,它將返回多個元素。定位超鏈接的核心代碼如下:

      driver.get("https://en.wikipedia.org/wiki/Category:G20_nations") elem=driver.find_elements_by_xpath("http://div[@class='mw-category-group']/ul/li/a") for e in elem: print(e.text) print(e.get_attribute("href"))

      函數find_elements_by_xpth()先解析HTML的DOM樹形結構并定位到指定節點,并獲取其元素。然后定義一個for循環,依次獲取節點的內容和href屬性,其中e.text表示節點的內容,例如下面節點之間的內容為China。

      China

      同時,e.get_attribute(“href”)表示獲取節點屬性href對應的屬性值,即“/wiki/China”,同理,e.get_attribute(“title”)可以獲取標題title屬性,得到值“China”。

      此時將獲取的超鏈接存儲至變量中如下圖,再依次定位到每個國家并獲取所需內容。

      (2) 調用Selenium定位并爬取各國頁面消息盒

      接下來開始訪問具體的頁面,比如中國“https://en.wikipedia.org/wiki/China”,如圖所示,可以看到頁面的URL、標題、摘要、內容、消息盒等,其中消息盒在途中右部分,包括國家全稱、位置等。

      下面采用<屬性-屬性值>對的形式進行描述,很簡明精準地概括了一個網頁實體,比如<首都-北京>、<人口-13億人>等信息。通常獲取這些信息之后,需要進行預處理操作,之后才能進行數據分析,后面章節將詳細講解。

      訪問到每個國家的頁面后,接下來需要獲取每個國家的第一段介紹,本小節講解的爬蟲內容可能比較簡單,但是講解的方法非常重要,包括如何定位節點及爬取知識。詳情頁面對應的HTML核心部分代碼如下:

      ...

      China , officially the People’s Republic of China ....

      ...

      ...

      ...

      瀏覽器審查元素方法如圖所示。

      正文內容位于屬性class為“mw-parser-output”的< div >節點下。在HTML中,< P >標簽表示段落,通常用于標識正文,< b >標簽表示加粗。獲取第一段內容即定位第一個< p >節點即可。核心代碼如下:

      driver.get("https://en.wikipedia.org/wiki/China") elem=driver.find_element_by_xpath("http://div[@class='mw-parser-output']/p[2]").text print elem

      注意,正文第一段內容位于第二個< p >段落,故獲取p[2]即可。同時,如果讀者想從源代碼中獲取消息盒,則需獲取消息盒的位置并抓取數據,消息盒(InfoBox)內容在HTML對應為如下節點,記錄了網頁實體的核心信息。

      ...

      2.代碼實現

      完整代碼參考文件test10_02.py,如下所示:

      # coding=utf-8 #By:Eastmount CSDN 2021-06-23 import time import re import os from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("https://en.wikipedia.org/wiki/Category:G20_nations") elem = driver.find_elements_by_xpath("http://div[@class='mw-category-group']/ul/li/a") name = [] #國家名 urls = [] #國家超鏈接 #爬取鏈接 for e in elem: print(e.text) print(e.get_attribute("href")) name.append(e.text) urls.append(e.get_attribute("href")) print(name) print(urls) #爬取內容 for url in urls: driver.get(url) elem = driver.find_element_by_xpath("http://div[@class='mw-parser-output']/p[1]").text print(elem)

      其中,爬取的信息如圖所示。

      PS:該部分大家簡單嘗試即可,更推薦爬取百度百科、互動百科和搜狗百科。

      四.Selenium爬取互動百科

      幾年過去,互動百科變成了快懂百科,但還好網頁結構未變化。

      1.網頁分析

      本小節將講解一個爬取互動百科最熱門的十個編程語言頁面的摘要信息,通過該實例加深讀者使用Selenium爬蟲技術的印象,更加深入地剖析網絡數據爬取的分析技巧。不同于Wikipedia先爬取詞條列表超鏈接再爬取所需信息、百度百科輸入詞條進入相關頁面再進行定向爬取,互動百科采用的方法是:

      設置不同詞條的網頁url,再去到該詞條的詳細界面進行信息爬取。

      由于互動百科搜索不同詞條對應的超鏈接是存在一定規律的,即采用

      “常用url+搜索的詞條名”

      方式進行跳轉,這里我們通過該方法設置不同的詞條網頁。具體步驟如下:

      (1) 調用Selenium分析URL并搜索互動百科詞條

      我們首先分析互動百科搜索詞條的一些規則,比如搜索人物“貴州”,對應的超鏈為:

      http://www.baike.com/wiki/貴州

      對應頁面如圖所示,從圖中可以看到,頂部的超鏈接URL、詞條為“貴州”、第一段為“貴州”的摘要信息、“右邊為對應的圖片等信息。

      同理,搜索編程語言“Python”,對應的超鏈接為:

      http://www.baike.com/wiki/Python

      可以得出一個簡單的規則,即:

      http://www.baike.com/wiki/詞條

      可以搜索對應的知識,如編程語言“Java”對應為:

      http://www.baike.com/wiki/Java

      (2) 訪問熱門Top10編程語言并爬取摘要信息

      2016年,Github根據各語言過去12個月提交的PR數量進行排名,得出最受歡迎的Top10編程語言分別是:JavaScript、Java、Python、Ruby、PHP、C++、CSS、C#、C和GO語言。

      然后,需要分布獲取這十門語言的摘要信息。在瀏覽器中選中摘要部分,右鍵鼠標點擊“審查元素”返回結果如圖所示,可以在底部看到摘要部分對應的HTML源代碼。

      新版本的“快懂百科”內容如下圖所示:

      “Java”詞條摘要部分對應的HTML核心代碼如下所示:

      Java是一門面向對象 編程語言 ,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
      Java具有簡單性、面向對象、分布式、 ...

      調用Selenium的find_element_by_xpath()函數,可以獲取摘要段落信息,核心代碼如下。

      driver = webdriver.Firefox() url = "http://www.baike.com/wiki/" + name driver.get(url) elem = driver.find_element_by_xpath("http://div[@class='summary']/div/span") print(elem.text)

      這段代碼的基本步驟是:

      首先調用webdriver.Firefox()驅動,打開火狐瀏覽器。

      分析網頁超鏈接,并調用driver.get(url)函數訪問。

      分析網頁DOM樹結構,調用driver.find_element_by_xpath()進行分析。

      輸出結果,部分網站的內容需要存儲至本地,并且需要過濾掉不需要的內容等。

      下面是完整的代碼及詳細講解。

      2.代碼實現

      完整代碼為blog10_03.py如下所示,主函數main()中循環調用getgetAbstract()函數爬取Top10編程語言的摘要信息。

      # coding=utf-8 #By:Eastmount CSDN 2021-06-23 import os import codecs from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() #獲取摘要信息 def getAbstract(name): try: #新建文件夾及文件 basePathDirectory = "Hudong_Coding" if not os.path.exists(basePathDirectory): os.makedirs(basePathDirectory) baiduFile = os.path.join(basePathDirectory,"HudongSpider.txt") #文件不存在新建,存在則追加寫入 if not os.path.exists(baiduFile): info = codecs.open(baiduFile,'w','utf-8') else: info = codecs.open(baiduFile,'a','utf-8') url = "http://www.baike.com/wiki/" + name print(url) driver.get(url) elem = driver.find_elements_by_xpath("http://div[@class='summary']/div/span") content = "" for e in elem: content += e.text print(content) info.writelines(content+'\r\n') except Exception as e: print("Error: ",e) finally: print('\n') info.write('\r\n') #主函數 def main(): languages = ["JavaScript", "Java", "Python", "Ruby", "PHP", "C++", "CSS", "C#", "C", "GO"] print('開始爬取') for lg in languages: print(lg) getAbstract(lg) print('結束爬取') if __name__ == '__main__': main()

      其中“JavaScript”和“Java”編程語言的抓取結果如圖所示,該段代碼爬取了熱門十門語言在互動百科中的摘要信息。

      程序成功抓取了各個編程語言的摘要信息,如下圖所示:

      同時將數據存儲至本地TXT文件中,這將有效為NLP和文本挖掘進行一步分析提供支撐。

      寫到這里,幾種常見的百科數據抓取方法就介紹完畢了,希望您喜歡。

      五.本章小結

      本文結合Selenium技術分別爬取了Wikipedia的段落內容、百度百科的消息盒和互動百科的摘要信息,并采用了三種分析方法,希望讀者通過該章節的案例掌握Selenium技術爬取網頁的方法。

      消息盒爬取

      文本摘要爬取

      網頁多種跳轉方式

      網頁分析及爬取核心代碼

      文件保存

      Selenium用得更廣泛的領域是自動化測試,它直接運行在瀏覽器中(如Firefox、Chrome、IE等),就像真實用戶操作一樣,對開發的網頁進行各式各樣的測試,它更是自動化測試方向的必備工具。希望讀者能掌握這種技術的爬取方法,尤其是目標網頁需要驗證登錄等情形。

      該系列所有代碼-:

      https://github.com/eastmountyxz/Python-zero2one

      感謝在求學路上的同行者,不負遇見,勿忘初心。這周的留言感慨~

      希望能與大家一起在華為云社區共同承載,原文地址:https://blog.csdn.net/Eastmount/article/details/118147562

      【生長吧!Python】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/278897

      (By:娜璋之家 Eastmount 2021-07-14 夜于武漢)

      參考文獻

      [1]?[譯]Selenium Python文檔:目錄 - Tacey Wong - 博客園

      [2]?Baiju Muthukadan Selenium with Python Selenium Python Bindings 2 documentation

      [3]?https://github.com/baijum/selenium-python

      [4]?http://blog.csdn.net/Eastmount/article/details/47785123

      [5]?Selenium實現自動登錄163郵箱和Locating Elements介紹 - Eastmount

      [6]?Selenium常見元素定位方法和操作的學習介紹 - Eastmount

      [7]《Python網絡數據爬取及分析從入門到精通(爬取篇)》Eastmount

      [8] 楊秀璋. 實體和屬性對齊方法的研究與實現[J]. 北京理工大學碩士學位論文,2016:15-40.

      [9] 徐溥. 旅游領域知識圖譜構建方法的研究和實現[J]. 北京理工大學碩士學位論文,2016:7-24.

      [10] 胡芳魏. 基于多種數據源的中文知識圖譜構建方法研究[J]. 華東理工大學博士學位論文,2014:25-60.

      [11] 楊秀璋. [python爬蟲] Selenium常見元素定位方法和操作的學習介紹 - CSDN博客[EB/OL]. (2016-07-10)[2017-10-14].

      https Python Selenium 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel2007表如何加密(Excel2007加密)
      下一篇:markdown甘特圖(kdchart甘特圖)
      相關文章
      国产精品亚洲va在线观看| 亚洲精品无码久久久久A片苍井空 亚洲精品无码久久久久YW | 亚洲综合激情五月丁香六月| 亚洲黄色一级毛片| 亚洲av日韩av无码黑人| 国产亚洲精品自在久久| 中文字幕亚洲综合久久菠萝蜜| 国产精品亚洲综合| 亚洲女女女同性video| 亚洲av成人一区二区三区| 亚洲另类古典武侠| 亚洲国产精品综合一区在线| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲成a人片在线观看无码专区| a级亚洲片精品久久久久久久| 久久精品国产亚洲精品| 亚洲一区二区三区国产精品| 亚洲国产人成精品| 亚洲国产电影av在线网址| 国产午夜亚洲精品不卡免下载| 国产精品亚洲专区无码WEB| 精品国产日韩亚洲一区91| 午夜在线亚洲男人午在线| 亚洲av无码不卡私人影院| 亚洲成av人片在线观看天堂无码 | 亚洲国产精品无码专区| 亚洲成AV人片在线观看ww| 亚洲国产成人久久精品影视| 久久亚洲AV无码精品色午夜| 91亚洲国产成人久久精品| 色噜噜亚洲男人的天堂| 亚洲色成人网站WWW永久四虎| 亚洲人成色99999在线观看| 狠狠入ady亚洲精品| 亚洲国产成人精品91久久久 | 亚洲无人区视频大全| 亚洲综合一区国产精品| 国产成人精品日本亚洲语音| 亚洲精品亚洲人成在线观看下载 | 亚洲第一页中文字幕| 亚洲av永久无码嘿嘿嘿|