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

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

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

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

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

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

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

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

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

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

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

1). python獲取html頁面

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

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

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

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

python爬蟲html解析庫SGMLParser

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

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')

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

start_tagname(self, attrs)
end_tagname(self)

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

python爬蟲html解析庫pyQuery

pyQuery 是 jQuery 在 python 中的實現(xiàn),能夠以 jQuery 的語法來操作解析 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解析庫BeautifulSoup

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

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

相關(guān)文章

  • python3.7中安裝paddleocr及paddlepaddle包的多種方法

    python3.7中安裝paddleocr及paddlepaddle包的多種方法

    這篇文章主要介紹了python3.7中安裝paddleocr及paddlepaddle包,本文通過多種方法給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • python 殺死自身進程的實現(xiàn)方法

    python 殺死自身進程的實現(xiàn)方法

    今天小編就為大家分享一篇python 殺死自身進程的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python數(shù)據(jù)展示之生成表格圖片

    Python數(shù)據(jù)展示之生成表格圖片

    這篇文章主要介紹了Python數(shù)據(jù)展示之生成表格圖片,文章基于Python庫的相關(guān)資料展開對主題的詳細介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-04-04
  • python中數(shù)組和列表的簡單實例

    python中數(shù)組和列表的簡單實例

    ,Python數(shù)據(jù)類型分為很多種,其中包括元組、字典、列表等,下面這篇文章主要給大家介紹了python中數(shù)組和列表使用的相關(guān)資料,以及python列表和Numpy數(shù)組的區(qū)別,需要的朋友可以參考下
    2022-03-03
  • Anaconda環(huán)境改名的實現(xiàn)步驟

    Anaconda環(huán)境改名的實現(xiàn)步驟

    本文主要介紹了Anaconda環(huán)境改名的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python列表刪除元素的三種實現(xiàn)方法

    python列表刪除元素的三種實現(xiàn)方法

    本文主要介紹了python列表刪除元素的三種實現(xiàn)方法,主要包括pop方法,remove方法,del方法這三種,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • python 實現(xiàn)turtle畫圖并導(dǎo)出圖片格式的文件

    python 實現(xiàn)turtle畫圖并導(dǎo)出圖片格式的文件

    今天小編就為大家分享一篇python 實現(xiàn)turtle畫圖并導(dǎo)出圖片格式的文件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python 回溯法模板詳解

    python 回溯法模板詳解

    今天小編就為大家分享一篇python 回溯法模板詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python?Flask-Login構(gòu)建強大的用戶認證系統(tǒng)實例探究

    Python?Flask-Login構(gòu)建強大的用戶認證系統(tǒng)實例探究

    這篇文章主要為大家介紹了Python?Flask-Login構(gòu)建強大的用戶認證系統(tǒng)示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • python用pyecharts實現(xiàn)地圖數(shù)據(jù)可視化

    python用pyecharts實現(xiàn)地圖數(shù)據(jù)可視化

    這篇文章主要介紹了python用pyecharts實現(xiàn)地圖數(shù)據(jù)可視化,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03

最新評論

杭锦旗| 晴隆县| 咸阳市| 营口市| 鸡泽县| 芜湖县| 麻城市| 鸡西市| 太仆寺旗| 高安市| 永泰县| 依兰县| 大石桥市| 大石桥市| 乌兰浩特市| 塔城市| 景泰县| 静乐县| 彰化县| 赤水市| 肇东市| 重庆市| 四川省| 吉隆县| 齐齐哈尔市| 湾仔区| 聂荣县| 楚雄市| 昌黎县| 辉县市| 四会市| 阿荣旗| 浙江省| 外汇| 玉屏| 永福县| 闻喜县| 屯昌县| 武清区| 理塘县| 沁水县|