今天在b站爬取弹幕的时候发现爬取的弹幕是乱码。最后发现是编码问题。
综合整理如下:
#首先准备request库和lxml库
import requests
from lxml import etree
#b站网址
url="https://api.bilibili.com/x/v2/dm/history?type=1&oid=129023838&date=2021-01-09"
#设置请求头防止反扒
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36",
"cookie": "_uuid=A366B5AD-0770-4D1E-F71B-2587760CAC6094820infoc; buvid3=8F1DB121-7BFB-4923-B5FA-9306898396A3143073infoc; sid=joozhe7k; DedeUserID=475936847; DedeUserID__ckMd5=ad02dfc55e996305; SESSDATA=988c9033%2C1613607061%2C29c31*81; bili_jct=974f12a39465683da26ee0da6ac4f5e1; rpdid=|(YuJ~|kJkk0J'ulm)|ll|)l; blackside_state=1; CURRENT_FNVAL=80; LIVE_BUVID=AUTO8615998250958107; fingerprint3=4517ff2ee6999d14f1b6c58b6b8256c3; fingerprint=00c1dd6c5cd06dc20c37736594a5e450; buivd_fp=8F1DB121-7BFB-4923-B5FA-9306898396A3143073infoc; buvid_fp_plain=8F1DB121-7BFB-4923-B5FA-9306898396A3143073infoc; fingerprint_s=7f4554ba1eba2e3390474eb2c577c79d; CURRENT_QUALITY=0; PVID=1; bsource=search_sougo; bfe_id=fdfaf33a01b88dd4692ca80f00c2de7f"
}
#发送请求
res = requests.get(url=url,headers=headers)
#设置编码格式
s = res.text
# s.encoding='utf-8'
selector = etree.HTML(s.encode('utf-8'))
#查看返回值。返回值200表明连接正常
print(res)
for item in selector.xpath('.'):
print(item)
ss = item.xpath('.//d/text()')
#进行解码和打印输出
for i in ss:
print(i.encode('raw_unicode_escape').decode())