學(xué)習(xí)python編寫爬蟲第一天,學(xué)會如何解析本地網(wǎng)頁
第1步:使用用Beautiful Soup解析網(wǎng)頁
Soup = BeautifulSoup(wb_data,'lxml')
第2步:描述爬取信息的位置
這里使用瀏覽器開發(fā)者工具,選取元素聊记,右鍵->Copy selector
可得到"body > div.main-content > ul > li > img"
代碼如下:
images = Soup.select('body > div.main-content > ul > li > img')
第3步:從標(biāo)簽中獲取所需要的信息
from bs4 import BeautifulSoupwith open('/Users/new_index.html','r') as wb_data: Soup = BeautifulSoup(wb_data,'lxml') images = Soup.select('body > div.main-content > ul > li > img') titles = Soup.select('body > div.main-content > ul > li > div.article-info > h3 > a') descs = Soup.select('body > div.main-content > ul > li > div.article-info > p.description') rates = Soup.select('body > div.main-content > ul > li > div.rate > span') cates = Soup.select('body > div.main-content > ul > li > div.article-info > p.meta-info') #print(images,titles,descs,rates,cates,sep='\n-------------\n')info = []for image,title,desc,rate,cate in zip(images,titles,descs,rates,cates): data = { 'title':title.get_text(), 'rate' :rate.get_text(), 'desc':desc.get_text(), 'cate': list(cate.stripped_strings), 'image': image.get('src') } info.append(data)for i in info: if float(i['rate'])>3: print(i['title'],i['cate'])
總結(jié):
- Mac中使用pip(注意python的版本,python3使用pip3)和easy_install安裝第三方庫
- selector 和Xpath兩種描述元素路徑的方式
- lxml是python中比較流行的解析庫,用來處理XML和HTML础钠,第一次使用需要安裝,否則會報錯:
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
運行下面的代碼安裝lxml
pip3 install lxml
- 在Copy selector會拷貝到某一個結(jié)點的子元素nth-child叉谜,如
ul > li:nth-child(2)
在python語言中需要改成它能理解的方式nth-of-type旗吁。
編譯器報錯提示為
Only the following pseudo-classes are implemented: nth-of-type.