最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python網(wǎng)絡(luò)爬蟲實(shí)例講解

 更新時(shí)間:2016年04月28日 11:39:52   作者:銀霜覆秋楓  
這篇文章主要為大家詳細(xì)介紹了Python網(wǎng)絡(luò)爬蟲實(shí)例,爬蟲的定義、主要框架等基礎(chǔ)概念,感興趣的小伙伴們可以參考一下

聊一聊Python與網(wǎng)絡(luò)爬蟲。

1、爬蟲的定義

爬蟲:自動(dòng)抓取互聯(lián)網(wǎng)數(shù)據(jù)的程序。

2、爬蟲的主要框架

爬蟲程序的主要框架如上圖所示,爬蟲調(diào)度端通過(guò)URL管理器獲取待爬取的URL鏈接,若URL管理器中存在待爬取的URL鏈接,爬蟲調(diào)度器調(diào)用網(wǎng)頁(yè)下載器下載相應(yīng)網(wǎng)頁(yè),然后調(diào)用網(wǎng)頁(yè)解析器解析該網(wǎng)頁(yè),并將該網(wǎng)頁(yè)中新的URL添加到URL管理器中,將有價(jià)值的數(shù)據(jù)輸出。

3、爬蟲的時(shí)序圖


4、URL管理器

URL管理器管理待抓取的URL集合和已抓取的URL集合,防止重復(fù)抓取與循環(huán)抓取。URL管理器的主要職能如下圖所示:


URL管理器在實(shí)現(xiàn)方式上,Python中主要采用內(nèi)存(set)、和關(guān)系數(shù)據(jù)庫(kù)(MySQL)。對(duì)于小型程序,一般在內(nèi)存中實(shí)現(xiàn),Python內(nèi)置的set()類型能夠自動(dòng)判斷元素是否重復(fù)。對(duì)于大一點(diǎn)的程序,一般使用數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。

5、網(wǎng)頁(yè)下載器

Python中的網(wǎng)頁(yè)下載器主要使用urllib庫(kù),這是python自帶的模塊。對(duì)于2.x版本中的urllib2庫(kù),在python3.x中集成到urllib中,在其request等子模塊中。urllib中的urlopen函數(shù)用于打開(kāi)url,并獲取url數(shù)據(jù)。urlopen函數(shù)的參數(shù)可以是url鏈接,也可以使request對(duì)象,對(duì)于簡(jiǎn)單的網(wǎng)頁(yè),直接使用url字符串做參數(shù)就已足夠,但對(duì)于復(fù)雜的網(wǎng)頁(yè),設(shè)有防爬蟲機(jī)制的網(wǎng)頁(yè),再使用urlopen函數(shù)時(shí),需要添加http header。對(duì)于帶有登錄機(jī)制的網(wǎng)頁(yè),需要設(shè)置cookie。

6、網(wǎng)頁(yè)解析器

網(wǎng)頁(yè)解析器從網(wǎng)頁(yè)下載器下載到的url數(shù)據(jù)中提取有價(jià)值的數(shù)據(jù)和新的url。對(duì)于數(shù)據(jù)的提取,可以使用正則表達(dá)式和BeautifulSoup等方法。正則表達(dá)式使用基于字符串的模糊匹配,對(duì)于特點(diǎn)比較鮮明的目標(biāo)數(shù)據(jù)具有較好的作用,但通用性不高。BeautifulSoup是第三方模塊,用于結(jié)構(gòu)化解析url內(nèi)容。將下載到的網(wǎng)頁(yè)內(nèi)容解析為DOM樹(shù),下圖為使用BeautifulSoup打印抓取到的百度百科中某網(wǎng)頁(yè)的輸出的一部分。


關(guān)于BeautifulSoup的具體使用,在以后的文章中再寫。下面的代碼使用python抓取百度百科中英雄聯(lián)盟詞條中的其他與英雄聯(lián)盟相關(guān)的詞條,并將這些詞條保存在新建的excel中。上代碼:

from bs4 import BeautifulSoup 
import re 
import xlrd 
<span style="font-size:18px;">import xlwt 
from urllib.request import urlopen 
 
 
 
excelFile=xlwt.Workbook() 
sheet=excelFile.add_sheet('league of legend') 
## 百度百科:英雄聯(lián)盟## 
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')</span> 

輸出的部分截圖如下:



excel部分的截圖如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)Python網(wǎng)絡(luò)爬蟲有所幫助。

相關(guān)文章

  • Python實(shí)現(xiàn)向QQ群成員自動(dòng)發(fā)郵件的方法

    Python實(shí)現(xiàn)向QQ群成員自動(dòng)發(fā)郵件的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)向QQ群成員自動(dòng)發(fā)郵件的方法,通過(guò)讀取txt文本里的QQ成員數(shù)據(jù)再調(diào)用發(fā)送郵件函數(shù)實(shí)現(xiàn)該功能,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-11-11
  • 一文帶你梳理Python的中級(jí)知識(shí)

    一文帶你梳理Python的中級(jí)知識(shí)

    Python是一種高級(jí)編程語(yǔ)言,它在眾多編程語(yǔ)言中,擁有極高的人氣和使用率。本文主要帶大家梳理一下Python中常用的中級(jí)知識(shí),希望對(duì)大家有所幫助
    2023-04-04
  • Python使用ntplib庫(kù)同步校準(zhǔn)當(dāng)?shù)貢r(shí)間的方法

    Python使用ntplib庫(kù)同步校準(zhǔn)當(dāng)?shù)貢r(shí)間的方法

    NTP網(wǎng)絡(luò)時(shí)間協(xié)議其實(shí)大家平時(shí)或多或少都能接觸到,包括Windows在內(nèi)的操作系統(tǒng)中的很多Internet時(shí)間同步功能都是在NTP的基礎(chǔ)上來(lái)做,這里我們來(lái)看一下Python使用ntplib庫(kù)同步校準(zhǔn)當(dāng)?shù)貢r(shí)間的方法
    2016-07-07
  • Python中threading.Timer()定時(shí)器實(shí)現(xiàn)定時(shí)任務(wù)

    Python中threading.Timer()定時(shí)器實(shí)現(xiàn)定時(shí)任務(wù)

    本文主要介紹了Python中threading.Timer()定時(shí)器實(shí)現(xiàn)定時(shí)任務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python實(shí)現(xiàn)的密碼強(qiáng)度檢測(cè)器示例

    Python實(shí)現(xiàn)的密碼強(qiáng)度檢測(cè)器示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的密碼強(qiáng)度檢測(cè)器,結(jié)合實(shí)例形式分析了Python密碼強(qiáng)度檢測(cè)的原理與實(shí)現(xiàn)方法,涉及Python字符串運(yùn)算與轉(zhuǎn)換、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法

    python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法

    這篇文章主要介紹了python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 簡(jiǎn)單了解Python生成器是什么

    簡(jiǎn)單了解Python生成器是什么

    這篇文章主要介紹了簡(jiǎn)單了解Python生成器是什么,生成器就是一個(gè)在行為上和迭代器非常類似的對(duì)象,如果把迭代器比作 Android 系統(tǒng),那么生成器就是 iOS,二者功能上差不多,但是生成器更優(yōu)雅,需要的朋友可以參考下
    2019-07-07
  • Python?Celery定時(shí)任務(wù)詳細(xì)講解

    Python?Celery定時(shí)任務(wù)詳細(xì)講解

    這篇文章主要介紹了Python?Celery定時(shí)任務(wù)詳細(xì)講解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Python 通過(guò)調(diào)用接口獲取公交信息的實(shí)例

    Python 通過(guò)調(diào)用接口獲取公交信息的實(shí)例

    今天小編就為大家分享一篇Python 通過(guò)調(diào)用接口獲取公交信息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實(shí)現(xiàn)

    matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實(shí)現(xiàn)

    本文主要介紹了matplotlib設(shè)置坐標(biāo)軸標(biāo)簽和間距的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論

巴中市| 滨州市| 洪雅县| 双牌县| 涟源市| 梨树县| 东兴市| 军事| 商丘市| 工布江达县| 温州市| 交城县| 武隆县| 剑川县| 金坛市| 通州市| 四子王旗| 莆田市| 河源市| 那坡县| 南充市| 沁阳市| 资溪县| 龙川县| 乐安县| 怀远县| 霍林郭勒市| 邓州市| 桦甸市| 崇礼县| 桑日县| 龙口市| 丰镇市| 六盘水市| 永善县| 临夏市| 西华县| 沧州市| 保靖县| 浠水县| 永胜县|