1. 程式人生 > >Python爬蟲學習之正則表達式爬取個人博客

Python爬蟲學習之正則表達式爬取個人博客

9.png turn () htm parent ast string 則表達式 urn

實例需求:運用python語言爬取http://www.eastmountyxz.com/個人博客的基本信息,包括網頁標題,網頁所有圖片的url,網頁文章的url、標題以及摘要。

實例環境:python3.7
      requests庫(內置的python庫,無需手動安裝)
      re庫(內置的python庫,無需手動安裝)

實例網站:

  第一步,點擊網站地址http://www.eastmountyxz.com/,查看頁面有哪些信息,網頁標題、圖片以及摘要等

  技術分享圖片

  第二步,查看網頁源代碼,即可看到想要爬取的基本信息

   技術分享圖片

  技術分享圖片

實例代碼:

 1 #encoding:utf-8
2 import re 3 #import urllib.request 4 import requests 5 6 7 def getHtmlStr(url): 8 #content = urllib.request.urlopen(url).read().decode("utf-8") 9 res = requests.get(url) 10 res.encoding = res.apparent_encoding 11 return res.text 12 13 def parseHtml(content):
14 #爬取整個網頁的標題 15 title = re.findall(r<title>(.*?)</title>, content) 16 print(title[0]) 17 #爬取圖片地址 18 urls = re.findall(r<img .*src="\./(.*?)", content) 19 baseUrl = http://www.eastmountyxz.com/ 20 21 for i in range(len(urls)): 22 urls[i] = baseUrl + urls[i]
23 print(urls) 24 25 #爬取文章信息 26 p = r<div class="essay.*?">(.*?)</div> 27 artcles = re.findall(p, content, re.S) 28 for a in artcles: 29 res = r<a .*href="(.*?)"> 30 t1 = re.findall(res, a, re.S) #超鏈接 31 print(t1[0]) 32 t2 = re.findall(r<a .*?>(.*?)</a>, a, re.S) #標題 33 print(t2[0]) 34 t3 = re.findall(<p style=.*?>(.*?)</p>, a, re.S) #摘要( 35 print(t3[0].replace( ,‘‘)) 36 print(‘‘) 37 38 if __name__ == __main__: 39 url = "http://www.eastmountyxz.com/" 40 htmlString = getHtmlStr(url) 41 parseHtml(htmlString)

實例結果:

  技術分享圖片

Python爬蟲學習之正則表達式爬取個人博客