利用urllib3 抓取博客列表
生活随笔
收集整理的這篇文章主要介紹了
利用urllib3 抓取博客列表
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
利用urllib3 抓取博客列表
- 分析頁(yè)面代碼
- 分析正則表達(dá)式
- 完整代碼
分析頁(yè)面代碼
從這段代碼中可以找到很多規(guī)律,例如,每條博客的所有信息都包含在一個(gè) <div> 節(jié)點(diǎn)中,這個(gè)<div>節(jié)點(diǎn)的class屬性值都是post-item-text,每一條博客的標(biāo)題和URL都包含在一個(gè)<a>節(jié)點(diǎn)中,這個(gè)<a> 在,節(jié)點(diǎn)的class屬性值是post-item-title。根據(jù)這些規(guī)律,很容易過(guò)濾出想要的信息。由于本例只需要得到: 博客的標(biāo)題和URL,所以只關(guān)注 <a> 節(jié)點(diǎn)即可。本例的基本原理就是通過(guò)正則表達(dá)式過(guò)濾出所有class屬性值為titlelenk的 <a>節(jié)點(diǎn),然后從 <a>節(jié)點(diǎn)中提煉出博客標(biāo)題和URL。分析正則表達(dá)式
<a class="post-item-title" href="https://www.cnblogs.com/lianghong881018/p/15169424.html" target="_blank">基于RT1052 Aworks 內(nèi)存擴(kuò)容記錄(一)</a> 這個(gè)是<a>的內(nèi)容得到以下正則表達(dá)式 <a[^>]*post-item-title[^>]*>[^<]*</a>- [^>]*:是匹配出來(lái)>字符的所有字符,在這里匹配class=",下一個(gè)則是匹配" href="https://www.cnblogs.com/lianghong881018/p/15169424.html" target="_blank"
完整代碼
from urllib3 import * from re import *http = PoolManager() # 禁止顯示警告信息 disable_warnings() # 加載 url 對(duì)應(yīng)得Web界面,即響應(yīng)后轉(zhuǎn)送的信息 def download(url):result = http.request('GET',url)# 獲取Web頁(yè)面對(duì)應(yīng)的HTML代碼htmlStr = result.data.decode('utf-8')return htmlStr#分析HTML代碼 def analyse(htmlStr):# 通過(guò)正則表達(dá)式獲取 class 屬性為 post-item-title 的<a>節(jié)點(diǎn)aList = findall('<a[^>]*post-item-title[^>]*>[^<]*</a>',htmlStr)result = []# 提取每一個(gè)<a>節(jié)點(diǎn)中的URLfor a in aList:g = search('href[\s]*=[\s]*[\'"]([^>\'""]*)[\'"]',a)if g!=None:url = g.group(1)# a為字符串,找到索引通過(guò)切片來(lái)得到標(biāo)題index1 = a.find(">")index2 = a.rfind("<")title = a[index1+1:index2]d = { }d['url'] = urld['title'] = titleresult.append(d)return result # 抓取博客列表 def crawler(url):html = download(url)blogList = analyse(html)#輸出信息for blog in blogList:print('title: ',blog['title'])print('url: ', blog['url'])# 開(kāi)始抓取 crawler('https://www.cnblogs.com')總結(jié)
以上是生活随笔為你收集整理的利用urllib3 抓取博客列表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 快乐数(双指针,哈希表)
- 下一篇: 网络爬虫(urllib超详细使用指南)