Python網路爬蟲執行個體講解

來源:互聯網
上載者:User
聊一聊Python與網路爬蟲。

1、爬蟲的定義

爬蟲:自動抓取互連網資料的程式。

2、爬蟲的主要架構

爬蟲程式的主要架構如所示,爬蟲調度端通過URL管理器擷取待爬取的URL連結,若URL管理器中存在待爬取的URL連結,爬蟲調度器調用網頁下載器下載相應網頁,然後調用網頁解析器解析該網頁,並將該網頁中新的URL添加到URL管理器中,將有價值的資料輸出。

3、爬蟲的時序圖


4、URL管理器

URL管理器管理待抓取的URL集合和已抓取的URL集合,防止重複抓取與迴圈抓取。URL管理器的主要職能如所示:


URL管理器在實現方式上,Python中主要採用記憶體(set)、和關聯式資料庫(MySQL)。對於小型程式,一般在記憶體中實現,Python內建的set()類型能夠自動判斷元素是否重複。對於大一點的程式,一般使用資料庫來實現。

5、網頁下載器

Python中的網頁下載器主要使用urllib庫,這是python內建的模組。對於2.x版本中的urllib2庫,在python3.x中整合到urllib中,在其request等子模組中。urllib中的urlopen函數用於開啟url,並擷取url資料。urlopen函數的參數可以是url連結,也可以使request對象,對於簡單的網頁,直接使用url字串做參數就已足夠,但對於複雜的網頁,設有防爬蟲機制的網頁,再使用urlopen函數時,需要添加http header。對於帶有登入機制的網頁,需要設定cookie。

6、網頁解析器

網頁解析器從網頁下載器下載到的url資料中提取有價值的資料和新的url。對於資料的提取,可以使用Regex和BeautifulSoup等方法。Regex使用基於字串的模糊比對,對於特點比較鮮明的目標資料具有較好的作用,但通用性不高。BeautifulSoup是第三方模組,用於結構化解析url內容。將下載到的網頁內容解析為DOM樹,為使用BeautifulSoup列印抓取到的百度百科中某網頁的輸出的一部分。


關於BeautifulSoup的具體使用,在以後的文章中再寫。下面的代碼使用python抓取百度百科中英雄聯盟詞條中的其他與英雄聯盟相關的詞條,並將這些詞條儲存在建立的excel中。上代碼:

from bs4 import BeautifulSoup import re import xlrd import xlwt from urllib.request import urlopen    excelFile=xlwt.Workbook() sheet=excelFile.add_sheet('league of legend') ## 百度百科:英雄聯盟## html=urlopen("http://baike.baidu.com/subview/3049782/11262116.htm") bsObj=BeautifulSoup(html.read(),"html.parser") #print(bsObj.prettify())  row=0  for node in bsObj.find("div",{"class":"main-content"}).findAll("div",{"class":"para"}):   links=node.findAll("a",href=re.compile("^(/view/)[0-9]+\.htm$"))   for link in links:     if 'href' in link.attrs:       print(link.attrs['href'],link.get_text())       sheet.write(row,0,link.attrs['href'])       sheet.write(row,1,link.get_text())       row=row+1   excelFile.save('E:\Project\Python\lol.xls') 

輸出的部分如下:



excel部分的如下:

以上就是本文的全部內容,希望對大家學習Python網路爬蟲有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.