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