爬虫学习day1
在初步了解了關(guān)于爬蟲(chóng)的原理以及較為基本的技術(shù)后,嘗試進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)的爬取練習(xí)。首先使用requests和beautifulsoup來(lái)爬取網(wǎng)頁(yè)上的部分信息。(以網(wǎng)易云音樂(lè)上的音樂(lè)排行榜信息爬取為例),記錄遇到的相關(guān)問(wèn)題以及解決方法。
一、獲取文本內(nèi)容
1、選取目標(biāo)網(wǎng)址
import requests
kv={'user-agent':'Mozilla/5.0'}
r=requests.get("http://music.163.com/#/discover/toplist",headers=kv,timeout=30)
雖然r.status_code 是200,但是并沒(méi)有出現(xiàn)我想要得到的網(wǎng)頁(yè)信息。通過(guò)對(duì)得到的網(wǎng)頁(yè)內(nèi)容進(jìn)行分析,發(fā)現(xiàn)出現(xiàn)問(wèn)題的地方是在爬取的連接地方。將鏈接中的#去掉后,爬到了需要的內(nèi)容。
r=requests.get("http://music.163.com/discover/toplist",headers=kv,timeout=30)
? 2、提取內(nèi)容
在網(wǎng)頁(yè)中其實(shí)需要提取的是榜單中對(duì)應(yīng)的音樂(lè)名稱(chēng)以及歌手名字。有兩個(gè)地方可以提取。分別在div標(biāo)簽下的li下面的a標(biāo)簽有歌名和id;另一個(gè)地方是
div下面的textarea的內(nèi)容更加詳細(xì)。在textarea里面,所有歌曲的信息以字典的形式放到了列表里面。所以直接提取textarea里面的文本內(nèi)容
from bs4 import BeautifulSoupsoup=BeautifulSoup(r.text,'html.parser')
InfoText=soup.find_all('div',id="song-list-pre-cache").textarea.text
得到的InforText為字符串形式,考慮用正則表達(dá)式進(jìn)行提取
通過(guò)json.loads(InfoText)將字符串轉(zhuǎn)換為list
?
轉(zhuǎn)載于:https://www.cnblogs.com/fatboys/p/8867988.html
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
- 上一篇: 自欺欺人的使用 NSTimer 销毁
- 下一篇: Bagging和Boosting的区别(