Python爬蟲實戰之爬取B站番劇資訊 詳細過程

2021-08-10 17:16:24 字數 3176 閱讀 4336

用到的類庫:

requests:網路請求

pyquery:解析xml文件,像使用jquery一樣簡單哦~

目標url:

設計video類:

import requests

from pyquery import pyquery as pq

class

video

(object):

def__init__

(self,name,see,intro):

self.name=name

self.see=see

self.intro=intro

def__str__

(self):

return

"{}--{}--{}".format(self.name,self.see,self.intro)

分析完頁面,設取爬去類:

class

bilibili

(object):

host=""

def__init__

(self):

self.dom=pq(requests.get('').text)

defget_recent

(self):

'''最近更新'''

items=self.dom('#list_bangumi_new .c-list .new .c-item')

videos=

for i in items:

name=i.find('.r-i .t').attr('title')

link=self.host+i.find('.r-i .t').attr('href')

d=pq(requests.get(url=link).text)

see=d(".info-count .info-count-item").eq(1).find('em').text()

intro=d('.info-row').eq(3).find('.info-desc').text()

return videos

測試執行一下:

哎呀,怎麼回事,居然返回為空

這種情況下不要慌,如果**沒有錯誤,那麼一般是由兩種情況造成

沒有選擇到目標,頁面是js動態載入的

我們先試下第一種情況,開啟瀏覽器,f12,將選擇字串複製到console中執行下,我們這就是$('#list_bangumi_new .c-list .new .c-item')可以選擇到我們想要的目標,那看來是頁面js動態載入了,那就方便我們了,我們就只要找到它的介面就好了,開啟瀏覽器,f12,在network裡面尋找一下就好了,

url:/api/timeline_v2_global

那麼最終爬取類關鍵**如下:

class

bilibili

(object):

recent_url = "/api/timeline_v2_global"

# 最近更新

detail_url = "/*****/"

def__init__

(self):

self.dom=pq(requests.get('').text)

defget_recent

(self):

'''最近更新'''

items=json.loads(requests.get(self.recent_url).text)['result']

videos=

for i in items:

name=i['title']

link=self.detail_url.format(season_id=i['season_id'])

d=pq(requests.get(url=link).text)

see = d(".info-count .info-count-item").eq(1).find('em').text()

intro = d('.info-desc-wrp').find('.info-desc').text()

return videos

執行一下:

很ok,那接下來把它做成命令列~

用到的類庫:

argparse:解析命令列引數

主要**如下:

if __name__ == '__main__':

parser=argparse.argumentparser()

parser.add_argument('--recent',help="get the recent info",action="store_true")

parser.add_argument('--num',help="the number of results returned,default show all",type=int,default=0)

parser.add_argument('-v','--version',help="show version",action="store_true")

args=parser.parse_args()

if args.version:

print("bilibili 1.0")

elif args.recent:

b = bilibili()

b.get_recent(args.num)

看下效果:

爬蟲專欄6 爬取B站彈幕

比如說這裡我隨便開乙個網頁 在xhr標籤裡面可以看到乙個小眼睛圖示的玩意兒,開啟那個url進去之後 就可以直接提取了 ps 1.針對匹配,乙個尖括號結束之後最好用.過渡到另乙個尖括號,不要什麼都不加,可能抓不出來 2.這是針對response.text和response.content.decode...

Python實戰爬蟲 爬取段子

不管三七二十一我們先導入模組 段子所在的 import re import requests 如果沒這模組執行cmd pip install requests領域 web開發,爬蟲,資料分析,資料探勘,人工智慧 零基礎到專案實戰,7天學習上手做專案 獲取 的內容 段子所在的 import re im...

爬取B站彈幕

最近幾天學習爬蟲,便爬取了b站的彈幕,本篇博文記錄的是爬取彈幕的方法一,近期會更新方法二。下面是流程 點開這個包是這個形式的 這裡面就有明文的彈幕,但通過requests獲得的response是經過utf 8編碼加密過的,想要獲得彈幕內容還要解密。下面附 from bs4 import beauti...