欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python網(wǎng)絡(luò)爬蟲功能的基本寫法

 更新時(shí)間:2016年01月28日 14:57:25   投稿:lijiao  
這篇文章主要介紹了Python網(wǎng)絡(luò)爬蟲功能的基本寫法,網(wǎng)絡(luò)爬蟲,即Web Spider,是一個(gè)很形象的名字。把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來爬去的蜘蛛,對(duì)網(wǎng)絡(luò)爬蟲感興趣的朋友可以參考本文

網(wǎng)絡(luò)爬蟲,即Web Spider,是一個(gè)很形象的名字。把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來爬去的蜘蛛。

1. 網(wǎng)絡(luò)爬蟲的定義

網(wǎng)絡(luò)蜘蛛是通過網(wǎng)頁(yè)的鏈接地址來尋找網(wǎng)頁(yè)的。從網(wǎng)站某一個(gè)頁(yè)面(通常是首頁(yè))開始,讀取網(wǎng)頁(yè)的內(nèi)容,找到在網(wǎng)頁(yè)中的其它鏈接地址,然后通過這些鏈接地址尋找下一個(gè)網(wǎng)頁(yè),這樣一直循環(huán)下去,直到把這個(gè)網(wǎng)站所有的網(wǎng)頁(yè)都抓取完為止。如果把整個(gè)互聯(lián)網(wǎng)當(dāng)成一個(gè)網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個(gè)原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁(yè)都抓取下來。這樣看來,網(wǎng)絡(luò)爬蟲就是一個(gè)爬行程序,一個(gè)抓取網(wǎng)頁(yè)的程序。網(wǎng)絡(luò)爬蟲的基本操作是抓取網(wǎng)頁(yè)。

2. 瀏覽網(wǎng)頁(yè)的過程

抓取網(wǎng)頁(yè)的過程其實(shí)和讀者平時(shí)使用IE瀏覽器瀏覽網(wǎng)頁(yè)的道理是一樣的。比如說你在瀏覽器的地址欄中輸入    www.baidu.com  這個(gè)地址。

打開網(wǎng)頁(yè)的過程其實(shí)就是瀏覽器作為一個(gè)瀏覽的“客戶端”,向服務(wù)器端發(fā)送了 一次請(qǐng)求,把服務(wù)器端的文件“抓”到本地,再進(jìn)行解釋、展現(xiàn)。

HTML是一種標(biāo)記語(yǔ)言,用標(biāo)簽標(biāo)記內(nèi)容并加以解析和區(qū)分。瀏覽器的功能是將獲取到的HTML代碼進(jìn)行解析,然后將原始的代碼轉(zhuǎn)變成我們直接看到的網(wǎng)站頁(yè)面。

3. 基于python實(shí)現(xiàn)的網(wǎng)絡(luò)爬蟲功能

1). python獲取html頁(yè)面

其實(shí),最基本的抓站,兩句話就可以了:

import urllib2
content = urllib2.urlopen('http://XXXX').read()

這樣可以得到整個(gè) html 文檔,關(guān)鍵的問題是我們可能需要從這個(gè)文檔中獲取我們需要的有用信息,而不是整個(gè)文檔。這就需要解析充滿了各種標(biāo)簽的 html。

2). python爬蟲抓取頁(yè)面后解析html方法

python爬蟲html解析庫(kù)SGMLParser

Python 默認(rèn)自帶 HTMLParser 以及 SGMLParser 等等解析器,前者實(shí)在是太難用了,我就用 SGMLParser 寫了一個(gè)示例程序:

import urllib2
from sgmllib import SGMLParser
 
class ListName(SGMLParser):
def __init__(self):
SGMLParser.__init__(self)
self.is_h4 = ""
self.name = []
def start_h4(self, attrs):
self.is_h4 = 1
def end_h4(self):
self.is_h4 = ""
def handle_data(self, text):
if self.is_h4 == 1:
self.name.append(text)
 
content = urllib2.urlopen('http://169it.com/xxx.htm').read()
listname = ListName()
listname.feed(content)
for item in listname.name:
print item.decode('gbk').encode('utf8')

  很簡(jiǎn)單,這里定義了一個(gè)叫做 ListName 的類,繼承 SGMLParser 里面的方法。使用一個(gè)變量 is_h4 做標(biāo)記判定 html 文件中的 h4 標(biāo)簽,如果遇到 h4 標(biāo)簽,則將標(biāo)簽內(nèi)的內(nèi)容加入到 List 變量 name 中。解釋一下 start_h4() 和 end_h4() 函數(shù),他們?cè)褪?SGMLParser 中的

start_tagname(self, attrs)
end_tagname(self)

tagname 就是標(biāo)簽名稱,比如當(dāng)遇到 <pre>,就會(huì)調(diào)用 start_pre,遇到 </pre>,就會(huì)調(diào)用 end_pre。attrs 為標(biāo)簽的參數(shù),以 [(attribute, value), (attribute, value), ...] 的形式傳回。

python爬蟲html解析庫(kù)pyQuery

pyQuery 是 jQuery 在 python 中的實(shí)現(xiàn),能夠以 jQuery 的語(yǔ)法來操作解析 HTML 文檔,十分方便。使用前需要安裝,easy_install pyquery 即可,或者 Ubuntu 下

sudo apt-get install python-pyquery

以下例子:

from pyquery import PyQuery as pyq
doc=pyq(url=r'http://169it.com/xxx.html')
cts=doc('.market-cat')
 
for i in cts:
print '====',pyq(i).find('h4').text() ,'===='
for j in pyq(i).find('.sub'):
print pyq(j).text() ,
print '\n'

python爬蟲html解析庫(kù)BeautifulSoup

有個(gè)頭痛的問題是,大部分的網(wǎng)頁(yè)都沒有完全遵照標(biāo)準(zhǔn)來寫,各種莫名其妙的錯(cuò)誤令人想要找出那個(gè)寫網(wǎng)頁(yè)的人痛打一頓。為了解決這個(gè)問題,我們可以選擇著名的 BeautifulSoup 來解析html 文檔,它具有很好的容錯(cuò)能力。

以上就是本文的全部?jī)?nèi)容,對(duì)Python網(wǎng)絡(luò)爬蟲功能的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • python網(wǎng)絡(luò)編程示例(客戶端與服務(wù)端)

    python網(wǎng)絡(luò)編程示例(客戶端與服務(wù)端)

    這篇文章主要介紹了python網(wǎng)絡(luò)編程示例,提供了客戶端與服務(wù)端,需要的朋友可以參考下
    2014-04-04
  • Python通過yagmail實(shí)現(xiàn)發(fā)送郵件代碼解析

    Python通過yagmail實(shí)現(xiàn)發(fā)送郵件代碼解析

    這篇文章主要介紹了Python通過yagmail實(shí)現(xiàn)發(fā)送郵件代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python元組拆包和具名元組解析實(shí)例詳解

    Python元組拆包和具名元組解析實(shí)例詳解

    這篇文章主要介紹了Python元組拆包和具名元組解析,下面的內(nèi)容就圍繞元組作為數(shù)據(jù)記錄屬性展開,并介紹帶字段名的具名元組函數(shù)namedtuple,列表屬性不再本文中敘述。
    2018-03-03
  • pandas創(chuàng)建DataFrame的方式小結(jié)

    pandas創(chuàng)建DataFrame的方式小結(jié)

    今天給大家整理了pandas創(chuàng)建DataFrame的方式小結(jié),現(xiàn)在我們就來看看這三種生成Dataframe的方式,每種方式通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-09-09
  • 關(guān)于python爬蟲的原理解析

    關(guān)于python爬蟲的原理解析

    這篇文章主要介紹了python爬蟲原理,今天我們要向大家詳細(xì)解說python爬蟲原理,什么是python爬蟲,python爬蟲工作的基本流程是什么等內(nèi)容,希望對(duì)這正在進(jìn)行python爬蟲學(xué)習(xí)的同學(xué)有所幫助
    2023-07-07
  • Python加載文件內(nèi)容的兩種實(shí)現(xiàn)方式

    Python加載文件內(nèi)容的兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了Python加載文件內(nèi)容的兩種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • python類裝飾器用法實(shí)例

    python類裝飾器用法實(shí)例

    這篇文章主要介紹了python類裝飾器用法,實(shí)例分析了Python類裝飾器的相關(guān)使用方法,需要的朋友可以參考下
    2015-06-06
  • Python異步發(fā)送日志到遠(yuǎn)程服務(wù)器詳情

    Python異步發(fā)送日志到遠(yuǎn)程服務(wù)器詳情

    這篇文章主要介紹了Python異步發(fā)送日志到遠(yuǎn)程服務(wù)器詳情,文章通過簡(jiǎn)單輸出到cmd和文件中的代碼展開詳情,需要的朋友可以參考一下
    2022-07-07
  • python實(shí)現(xiàn)網(wǎng)站微信登錄的示例代碼

    python實(shí)現(xiàn)網(wǎng)站微信登錄的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)網(wǎng)站微信登錄的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python之循環(huán)結(jié)構(gòu)

    Python之循環(huán)結(jié)構(gòu)

    今天小編就為大家分享一篇關(guān)于Python之循環(huán)結(jié)構(gòu),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評(píng)論