[Python爬蟲]使用Python爬取靜態網頁-鬥魚直播
作者:宅必備 Python愛好者社區--專欄作者
一個會寫Python的Oracle DBA個人公眾號:宅必備公眾號:Python愛好者社區
作者其他文章:
[Python程序]利用微信企業號發送報警信息
好久沒更新Python相關的內容了,這個專題主要說的是Python在爬蟲方面的應用,包括爬取和處理部分
第一節我們介紹如何爬取靜態網頁
靜態網頁指的是網頁的內容不是通過js動態載入出來的
我們可以直接使用一些開發者工具查看
這裡我採用谷歌瀏覽器的開發者工具
開發環境
操作系統:windows 10
Python版本 :3.6
爬取網頁模塊:requests
分析網頁模塊:Beautiful Soup 4
模塊安裝
pip3 install requests
pip3 install beautifulsoup4
網頁分析
我們使用爐石傳說的頁面來開始分析
https://www.douyu.com/directory/game/How
我們可以通過左上角的箭頭來定位網頁內容對應的源
從上面我們可以看出單個直播的信息都在li標籤下面,包括:
- 封面圖片地址
- 直播介紹
- 主播名稱
- 觀看人數
代碼介紹
這裡逐行介紹代碼
1. import相關的模塊
import requests
from bs4 import BeautifulSoup
2. 使用request模塊打開並獲取網頁內容
verify=False 在打開https網頁時使用
url=HTTPs://www.douyu.com/directory/game/+douyugame
r = requests.get(url,verify=False)content=r.content
3. 使用bs4格式化獲取的網頁
這時就可以使用bs4的功能來處理網頁了
soup = BeautifulSoup(content,"lxml")
4. 獲取所有li標籤
這裡獲取所有具有data-cid屬性的li標籤
live_list=soup.find_all(li,attrs = {data-cid : True})
5.循環獲取到li標籤,然後提取需要的信息
我們這裡只提取在線人數大於8000的直播間
game_count=all_game.find(span,attrs = {class : dy-num fr}).text
代表查找一個span標籤,其class屬性值為dy-num fr,然後獲取它的內容
game_link=https://www.douyu.com+all_game[href]
代表獲取a標籤中href屬性的值
剩下的同理
6. 最後將獲取到的信息放入字典中
這時我們可以將結果存入資料庫中供查看,這裡就不多說了
執行結果
源碼位置
源碼請訪問我的github主頁
https://github.com/bsbforever/spider/blob/master/static_web.py
推薦閱讀:
※編程小白如何寫爬蟲程序
※xpath+mongodb抓取伯樂在線實戰
※爬蟲代碼改進(二)|多頁抓取與二級頁面
※演示利用爬蟲監測網頁評論
※爬蟲的矛與盾