詳解Python網路爬蟲功能的基本寫法

2023-03-19 01:15:40 字數 2552 閱讀 7509

網路爬蟲,即web spider,是一個很形象的名字。把網際網路比喻成一個蜘蛛網,那麼spider就是在網上爬來爬去的蜘蛛。

1. 網路爬蟲的定義

網路蜘蛛是通過網頁的連結地址來尋找網頁的。從**某一個頁面(通常是首頁hmbynk)開始,讀取網頁的內容,找到在網頁中的其它連結地址,然後通過這些連結地址尋找下一個網頁,這樣一直迴圈下去,直到把這個**所有的網頁都抓取完為止。如果把整個網際網路當成一個**,那麼網路蜘蛛就可以用這個原理把網際網路上所有的網頁都抓取下來。這樣看來,網路爬蟲就是一個爬行程式,一個抓取網頁的程式。網路爬蟲的基本操作是抓取網頁。

2. 瀏覽網頁的過程

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

開啟網頁的過程其實就是瀏覽器作為一個瀏覽的“客戶端”,向伺服器端傳送了 一次請求,把伺服器端的檔案“抓”到本地,再進行解釋、展現。

html是一種標記語言,用標籤標記內容並加以解析和區分。瀏覽器的功能是將獲取到的html**進行解析,然後將原始的**轉變成我們直接看到的網程式設計客棧站頁面。

3. 基於python實現的網路爬蟲功能

1). python獲取html頁面

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

import urllib2

content = urllib2.urlopen('http://***x').read()

這樣可以得到整個 html 文件,關鍵的問題是我們可能需要從這個文件中獲取我們需要的有用資訊,而不是整個文件。這就需要解析充滿了各種標籤的 html。

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

python爬蟲html解析庫sgmlparser

python 預設自帶 html程式設計客棧parser 以及 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('').read()

listname = listname()

listname.feed(content)

for item in listname.name:

print item.decode('gbk').encode('utf8')

很簡單,這裡定義了一個叫做 listname 的類,繼承 sgmlparser 裡面的方法。使用一個變數 is_h4 做標記判定 html 檔案中的 h4 標籤,如果遇到 h4 標籤,則將標籤內的內容加入到 list 變數 name 中。解釋一下 start_h4() 和 end_h4() 函式,他們原型是 sgmlparser 中的

start_tagname(self, attrs)

end_tagname(self)

tagname 就是標籤名稱,比如當遇到

,就會呼叫 start_pre,遇到,就會呼叫 end_pre。attrs 為標籤的引數,以 [(attribute, value), (attribute, value), ...] 的形式傳回。

python爬蟲html解析庫pyquery

pyquery 是 jquery 在 python 中的實現,能夠以 jquery 的語法來操作解析 html 文件,十分方便。使用前需要安裝,easy_install pyquery 即可,或者 ubuntu 下

sudo apt-get install python-pyquery

以下例子:

from pyquery import pyquery as pyq

doc=pyq(url=r'')

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

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

本文標題: 詳解python網路爬蟲功能的基本寫法

本文地址:

詳解用python寫網路爬蟲 爬取新浪微博評論

新浪微博需要登入才能爬取,這裡使用m.weibo.cn這個www.cppcns.com移動端 即可實現簡化操作,用這個訪問可以直接得到的微博id。分析新浪微博的評論獲取方式得知,其採用動態載入。所以使用json模組解析json 單獨編寫了字元優化函式,解決微博評論中的嘈雜干擾字元 本函式是用pyth...

網路爬蟲06 PyQuery庫詳解

pyquery 1.什麼是pyquery庫 強大又靈活的網頁解析庫。如果你覺得正則寫起來太麻煩,如果你覺得beautifulsoup語法太難記,如果你熟悉jquery的語法,那麼pyquery就是你的絕佳選擇 2.安裝 pip3 install pyquery初始化 1.字串初始化 html fro...

Python網路爬蟲

示例 coding utf 8 import requests from bs4 import beautifulsoup url1 侏羅紀世界 url2 夢幻西遊 pra pra r requests.get params pra print r.url soup beautifulsoup r....

Python網路爬蟲

1 爬蟲主調程式 用於控制爬蟲的執行狀態 if name main obj imoocmain 主調程式類 obj.craw shikigami 爬取基礎資料 def craw shikigami self self.urls.add new url self.root url shikigami ...

Python3 網路爬蟲 3

在這一次的內容中,我們繼續討論beautifulsoup的一些操作,我們這次只討論幾個在實踐中用處特別大的幾個函式。這次我們將學習通過屬性查詢標籤的方法,標籤組的使用。我們一起回憶一下,基本上,我們見過的每個 都會使用層疊樣式表 css,不懂的可以補一下網頁相關知識 這個css由於其結構的規範化,可...

Python網路爬蟲

python網路爬蟲nga論壇 一.前期準備 1.開發環境eclips,但是需要配置python開發環境 2.需要用到beatifulsoup庫,以及requests庫,matplotlib庫 3.urllib的request模組可以非常方便地抓取url內容,也就是傳送一個 get請求到指定的頁面,...

python網路爬蟲

python網路爬蟲 從入門到實踐 獲取的方式可以分為靜態頁面 和 動態頁面的獲取 靜態頁面比較簡單,直接使用python的request庫就可以獲取 動態頁面由於有些結果是頁面載入後通過執行js再去獲取的,所以無法直接從頁面原始碼獲取資料 對於動態頁面 也有兩種 處理方案 一種是 分析動態頁面的原...

Python網路爬蟲

python簡介 python 是一個高層次的結合瞭解釋性 編譯性 互動性和麵向物件的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。python 是一種解釋型語言 這意味著開發過程中沒有了編譯這個環節。類似...

python網路爬蟲

網路爬蟲又稱網路蜘蛛,是指按照某種規則在網路上爬取所需內容的指令碼程式。眾所周知,每個網頁通常包含其他網頁的入口,網路爬蟲則通過一個 依次進入其他 獲取所需內容。一 首先一個網路爬蟲的組成結構 二 編寫網路爬蟲 1 準備所需庫 1 瀏覽器就傳送訊息給該 所在的伺服器,這個過程叫做http reque...

Python3網路爬蟲

pip install requests2.匯入requests後,使用requests的get方法獲取網頁並列印 import requests html requests.get 這裡可以填其他的 print html.text 如果不加.text就會列印 這樣就可以列印出的源 然後我們神奇地發...