爬蟲基礎-1-爬取小說資源
阿新 • • 發佈:2018-11-29
小生部落格:http://xsboke.blog.51cto.com
小生 Q Q:1770058260
-------謝謝您的參考,如有疑問,歡迎交流
使用BeautifulSoup爬取網站資源
注:此文僅供學習參考,如果該網站平凡文學負責人有異議,請留言,作者將刪除此文章有關平凡文學的所有資訊.
BeautifulSoup簡介:
我的理解:BeautifulSoup就是用來解析Html的模組,詳細資訊還請參考BeautifulSoup4.2.0 中文文件
隨便找了一個小說網站,沒有爬取文章內容,主要是理解一下BeautifulSoup4的使用方法,如果搞懂本文了,爬取文章都不是問題.
程式碼最後生成一個字典如下:
{'玄幻':[['書名1','作者1','書連結1'],
['書名2','作者2','書連結2']
],
'恐怖':[['書名1','作者1','書連結1'],
['書名2','作者2','書連結2']
]
}
程式碼正文:
請安裝requests和bs4(BeautifulSoup)
from bs4 import BeautifulSoup import requests,sys sys.setrecursionlimit(10000) # 防止超出遞迴深度報錯 Url_Index = 'http://m.pfwx.com' r = requests.get(Url_Index) r.encoding = 'utf-8' content = r.text soup = BeautifulSoup(content,features='html.parser') target = soup.find('div',class_='nav') # 只獲取第一個包含class='nav'屬性的div標籤 tar = target.find_all('a') # 過濾出a標籤 # 獲取index的欄目 Index_Menu = {} for so in tar: TEXT = so.get_text() HREF = Url_Index + so['href'] # 獲取href屬性的值 Index_Menu[TEXT] = HREF # 獲取分類 Class_Page = Index_Menu['分類'] r = requests.get(url=Class_Page) r.encoding = 'utf-8' content = r.text soup = BeautifulSoup(content,features='html.parser') tag = soup.body.find_all('li',class_='prev') Menu = {} for so in tag: TEXT = so.get_text() # 獲取文字 HREF = so.a.attrs['href'] # 獲取a標籤中的href屬性 # 生成各個分類的Url Category_Url = Url_Index + HREF Menu[TEXT] = Category_Url # 獲取每種分類的書資訊 for ClassName in Menu: Book_List = [] def make(url): '''獲取所有的書資訊,並且交給函式IF判斷是否還有下一頁,如果有則繼續獲取書的資訊''' r = requests.get(url=url) content = r.text soup = BeautifulSoup(content, features='html.parser') target = soup.find_all('a', class_='blue') for so in target: BookName = so.get_text() # 書名 IMHOW_NAME = so.next_sibling.split('/')[1] # 作者名 HREF = Url_Index + so['href'] # 書的連結 Book_List.append([BookName,IMHOW_NAME,HREF]) Next_Page = soup.find('div', class_='page') IF(NextPage=Next_Page) def IF(NextPage): '''判斷是否還有下一頁,如果有則繼續迴圈''' for Page in NextPage.find_all('a'): if Page.get_text() == '下頁': '''判斷如果還有下頁,則繼續獲取書的資訊''' Url = Url_Index + Page['href'] make(url=Url) url=Menu[ClassName] # 獲取當前分類的URL make(url) # 獲取當前分類的所有書資訊 Menu[ClassName] = Book_List # 最後生成的資訊都在這個字典裡面;格式{'玄幻':[['書名1','作者1','書連結1'],['書名2','作者2','書連結2']]}