最近碑隆,有小粉絲在后臺(tái)私信我恭陡,說:小Q啊,我這邊按照你之前的教程上煤,去獲取一些小說的內(nèi)容休玩,想要自己私下看,但是為什么劫狠,我拿到這些小說之后哥捕,全都是亂碼啊,就像下面這個(gè)樣子
我也encoding=‘utf-8’去進(jìn)行相應(yīng)的修改了嘉熊,但是還是有問題怎么回事啊,我看了一下扬舒,他在最一開始的時(shí)候阐肤,獲取到網(wǎng)頁信息的時(shí)候就已經(jīng)是亂碼了,如何獲取網(wǎng)站的響應(yīng)信息呢讲坎?大家可以看這里孕惜,這是我之前寫的文章,有詳細(xì)的圖文解析:
五步帶你探究爬蟲爬取視頻彈幕背后的真相晨炕,附爬蟲實(shí)現(xiàn)源碼
注意:這個(gè)連接中有一個(gè)獲取源碼的小項(xiàng)目衫画,但是,現(xiàn)在這個(gè)小項(xiàng)目進(jìn)行了更新瓮栗,B站為了讓彈幕數(shù)量更高一些削罩,所以采用了一種加密和壓縮的新格式,解決方案有兩種
第一種:采用復(fù)雜的解密方法
第二種:很簡單
#這是原地址 https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=106015992&date=2021-01-20# url是新的地址
> url='https://api.bilibili.com/x/v2/dm/history?type=1&oid=106015992&date=2021-01-20'
就是刪除web以及seg.so即可
大家可以去嘗試一下
這里啊费奸,也教初學(xué)者一點(diǎn)小技巧弥激,當(dāng)你的實(shí)現(xiàn)邏輯沒有問題,也覺得這個(gè)應(yīng)該不是我們的代碼問題愿阐,那可以通過print方法微服,每一步去打印相應(yīng)的結(jié)果,看是哪一步出現(xiàn)的問題
類似這個(gè)樣子缨历,這樣的話以蕴,你可以查看到每一步的結(jié)果糙麦,就知道到底是哪一步出現(xiàn)問題,對(duì)于初學(xué)者丛肮,可以更好地理解相應(yīng)的方法實(shí)現(xiàn)赡磅,也能找到到底是那一步出現(xiàn)問題,下面把我這個(gè)小粉絲的代碼以及需求分享給大家
#需求:爬取三國演義小說所有的章節(jié)標(biāo)題和章節(jié)內(nèi)容
#https://www.shicimingju.com/book/sanguoyanyi.html
import requests
from bs4 import BeautifulSoup
import lxml
?
# UA偽裝
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36"
}
?
url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
?
page_text = requests.get(url=url,headers=headers)
page_text.encoding='utf-8'
?
# 在首頁中解析出文章的標(biāo)題和詳情頁的url
# 1 實(shí)例化BeautifulSoup對(duì)象 需要將頁面源碼的數(shù)據(jù)加載到該對(duì)象中
?
soup = BeautifulSoup(page_text.text,"lxml")
?
?
# 解析章節(jié)標(biāo)題和詳情頁的url
li_list = soup.select(".book-mulu > ul > li")
?
print(li_list)
fp = open("./sanguo.txt",'w',encoding="utf-8")
print(fp)
for li in li_list:
title = li.a.string
detail_url = "https://www.shicimingju.com"+li.a["href"]
# 對(duì)詳情頁發(fā)起請(qǐng)求 解析章節(jié)內(nèi)容
detail_url_text = requests.get(url=detail_url,headers=headers)
detail_url_text.encoding='utf-8'
# 解析出詳情頁相關(guān)的章節(jié)內(nèi)容
detail_soup = BeautifulSoup(detail_url_text.text,"lxml")
div_tag = detail_soup.find("div", class_="chapter_content")
#解析到了講解的內(nèi)容
content = div_tag.text
fp.write(title+":"+content+"\n")
print(title,"爬取成功")
福利消息:
vip音樂獲取源碼:
程序員絕對(duì)不可能花錢系列--Python獲取VIP音樂
當(dāng)然腾供,最后仆邓,只有這幾個(gè)代碼怎么可以,給大家透露一個(gè)福利消息:
我已經(jīng)開始將自己的python相應(yīng)的代碼開源到我的碼云中
后面我會(huì)錄制一套視頻包含爬蟲伴鳖,數(shù)據(jù)分析以及辦公自動(dòng)化的相應(yīng)內(nèi)容节值,并且聯(lián)合代碼免費(fèi)分享給大家,大家可以持續(xù)關(guān)注我,到時(shí)候考慮一下是在B站還是直接網(wǎng)盤分享給大家脾猛,供大家學(xué)習(xí)使用娱仔,現(xiàn)在年底了,雖然我們已經(jīng)因?yàn)橐咔橥9せ丶伊四淠耍牵依镆琅f一堆事豌汇,畢竟也有一年沒有回家了幢炸,所以這個(gè)視頻暫定時(shí)間是年后進(jìn)行發(fā)布,現(xiàn)在就委屈想學(xué)習(xí)的大家拒贱,先看著文字學(xué)習(xí)一下吧