Python爬蟲學習之正則表達式爬取個人博客
阿新 • • 發佈:2018-12-17
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-82 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爬蟲學習之正則表達式爬取個人博客