python爬蟲 資料爬取和具體解析

2022-06-24 12:30:14 字數 2524 閱讀 2743

關於正規表示式的更多用法,可參考鏈結

article

/details/81027081

一、正規表示式:

1.常用正則匹配:

2.特殊組合:

([\s\s]*?) == ([.\n]*?) == re.findall(『.*?『, re.s)

萬能正規表示式 (加『?』表示懶惰模式,盡可能最小長度匹配; 不加『?』表示貪婪模式,盡可能最大長度匹配)

\s\s : 空白字元+非空白字元,即表示所有字元 all, == 』 .\n 『(.表示除換行符之外的任意字元,\n表示換行符)

re.s: 即dotaall 點匹配任意模式,改變.的行為,可以匹配換行符

二、例子

獲取的其中一篇文章的內容,儲存至文件中。(具體解析在**注釋中可見)

1.源**

1

import

requests

2importre3

import

json45

defrequest_blog(url):6#

異常處理**塊

7try:8

#同步請求

9 response =requests.get(url)

10if response.status_code == 200:

11return

response.text

12except

requests.requestexception:

13return

none

1415

defparse_result(html):16#

re正規表示式,re.compile是對匹配符的封裝,直接用re.match(匹配符,要匹配的原文本)可以達到相同的效果, 17#

當然,這裡沒有用re.match來執行匹配,而是用了re.findall,這是因為後者可以適用於多行文字的匹配。18#

另外,re.compile後面的第2個引數,re.s是用來應對換行的,.匹配的單個字元不包括\n和\r,當遇到換行時,我們需要用到re.s

1920

#獲取網頁中的標籤中的內容,遇到換行符時,自動跳出迴圈21#

格式:標籤加.*?,.*?表示取標籤中的所有資料

22 pattern = re.compile('

',re.s)

23 items =re.findall(pattern, html)

24return

items

2526

defwrite_item_to_file(item):

27print('

寫入資料:

' +str(item))28#

儲存的檔名blog.txt,寫入檔案的格式a追加,寫入檔案的中文格式化utf-8

29 with open('

blog.txt

', '

a', encoding='

utf-8

') as f:30#

遇到換行符時,自動換行

31 f.write(json.dumps(item, ensure_ascii=false) + '\n'

)3233def

main(page):34#

**35 url = '

' +str(page)36#

呼叫獲取網頁資料的函式

37 html =request_blog(url)38#

呼叫解析已獲取的網頁資料的函式

39 items =parse_result(html)40#

迴圈寫入檔案

41for item in

items:

42write_item_to_file(item)

4344

if__name__ == "

__main__":

45for i in range(1,5):

46 main(i)

2.執行結果

3.原文文章截圖

4.寫入檔案內容

三、小結

強化爬蟲爬取網頁資訊的技術,以及解析資料時的邏輯順序。

python爬蟲 爬取貓眼電影資料

定義乙個函式獲取貓眼電影的資料 import requests def main url url html requests.get url text print html if name main main 利用正則匹配,獲得我們想要的資訊 dd i class board index board...

Python爬蟲爬取資料的步驟

步驟 2.把獲取得到的多個網頁鏈結存入字典,充當乙個臨時資料庫,在需要用時直接通過函式呼叫即可獲得 4.面對爬蟲時代,各個 基本上都設定了相應的反爬蟲機制,當我們遇到拒絕訪問錯誤提示404時,可通過獲取user agent 來將自己的爬蟲程式偽裝成由人親自來完成的資訊的獲取,而非乙個程式進而來實現網...

Python 爬蟲爬取網頁

工具 python 2.7 import urllib import urllib2 defgetpage url 爬去網頁的方法 request urllib.request url 訪問網頁 reponse urllib2.urlopen request 返回網頁 return response...