Python是當今最熱門的程式語言之一,在不同的領域都得到了廣泛的應用,如資料科學、人工智慧、網路安全等。其中,Python在網路爬蟲領域表現出色,許多企業和個人利用Python進行資料收集和分析。本篇文章將介紹如何使用Python爬取豆瓣圖書信息,幫助讀者初步了解Python網絡爬蟲的實現方法和技術。
首先,對於豆瓣圖書資訊爬蟲,我們需要用到Python中的兩個重要的庫:urllib和beautifulsoup4。其中,urllib庫主要用於網路請求和資料讀取,而beautifulsoup4庫則可用於解析HTML和XML等結構化文檔,從而提取所需的資訊。在使用這些庫之前,我們需要先安裝它們,使用pip命令即可完成安裝。安裝完成後,就可以開始我們的實戰了。
- 確定爬取目標
在使用Python進行爬蟲時,首先需要先明確爬取目標。對於本篇文章而言,我們的目標是爬取豆瓣圖書的基本訊息,如書名、作者、出版社、出版日期、評分等。此外,我們還需要爬取多頁圖書資訊。
- 分析HTML結構
確定了爬取目標之後,我們需要進一步分析豆瓣圖書的HTML結構,以便確定所需資訊的位置和特徵。我們可以使用Chrome或Firefox等瀏覽器自帶的開發者工具來查看頁面原始碼。透過觀察HTML結構,我們可以找到需要爬取的標籤和屬性,進而編寫Python程式碼進行實作。
- 寫程式
接下來,我們在Python中寫豆瓣圖書爬蟲程式碼。程式碼的核心是:
- 傳送網路請求並取得HTML頁面;
- 解析HTML文檔,擷取所需資訊; ##儲存資料。
import urllib.request from bs4 import BeautifulSoup url = 'https://book.douban.com/top250' books = [] def get_html(url): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'} req = urllib.request.Request(url, headers=headers) response = urllib.request.urlopen(req) html = response.read().decode('utf-8') return html def parse_html(html): soup = BeautifulSoup(html,'html.parser') book_list_soup = soup.find('div', attrs={'class': 'article'}) for book_soup in book_list_soup.find_all('table'): book_title_soup = book_soup.find('div', attrs={'class': 'pl2'}) book_title_link = book_title_soup.find('a') book_title = book_title_link.get('title') book_url = book_title_link.get('href') book_info_soup = book_soup.find('p', attrs={'class': 'pl'}) book_info = book_info_soup.string.strip() book_rating_num_soup = book_soup.find('span', attrs={'class': 'rating_nums'}) book_rating_num = book_rating_num_soup.string.strip() book_rating_people_num_span_soup = book_soup.find('span', attrs={'class': 'pl'}) book_rating_people_num = book_rating_people_num_span_soup.string.strip()[1:-4] book_author_and_publish_soup = book_soup.find('p',attrs={'class':'pl'}).next_sibling.string.strip() book_author_and_publish = book_author_and_publish_soup.split('/') book_author = book_author_and_publish[0] book_publish = book_author_and_publish[-3] book_year = book_author_and_publish[-2] books.append({ 'title': book_title, 'url': book_url, 'info': book_info, 'author':book_author, 'publish':book_publish, 'year':book_year, 'rating_num':book_rating_num, 'rating_people_num':book_rating_people_num }) def save_data(): with open('douban_top250.txt','w',encoding='utf-8') as f: for book in books: f.write('书名:{0} '.format(book['title'])) f.write('链接:{0} '.format(book['url'])) f.write('信息:{0} '.format(book['info'])) f.write('作者:{0} '.format(book['author'])) f.write('出版社:{0} '.format(book['publish'])) f.write('出版年份:{0} '.format(book['year'])) f.write('评分:{0} '.format(book['rating_num'])) f.write('评分人数:{0} '.format(book['rating_people_num'])) if __name__ == '__main__': for i in range(10): start = i*25 url = 'https://book.douban.com/top250?start={0}'.format(start) html = get_html(url) parse_html(html) save_data()程式碼解析:#首先,我們定義一個主網址url和一個空列表books(用於儲存圖書資訊) 。接著,我們編寫get_html函數,用於發送請求並取得HTML頁面。在該函數中,我們設定了請求頭headers,以模擬瀏覽器發送請求,從而避免被網站封鎖。我們使用urllib庫的Request方法,將請求頭和網址封裝到一個物件中,然後使用urllib庫的urlopen方法,發送網路請求並取得頁面,最後使用read和decode方法,將頁面內容轉換成utf-8格式的字串。 我們寫parse_html函數,用來解析HTML文檔,提取所需資訊。在這個函數中,我們使用beautifulsoup4函式庫的find和find_all方法,找出HTML頁面中符合要求的標籤和屬性。具體地,我們透過觀察豆瓣圖書的HTML結構,找到了每本圖書所在的table標籤和對應的書名、連結、資訊和評分等信息,並編寫了提取這些數據的程式碼。其中,我們使用了strip和split方法,對字串進行處理,以去除多餘空白字元和分割字串。 最後,我們編寫了save_data函數,用於將提取的圖書資訊儲存到本地文件中。在該函數中,我們使用Python內建函數open,開啟一個文字文件,以寫入模式寫入檔案內容,並使用format方法,將每本圖書的相關資訊格式化為字串,寫入檔案。注意,我們需要在檔案名稱後面加上編碼方式encoding='utf-8',以確保檔案內容不會出現亂碼。 在主程式中,我們使用for循環,爬取豆瓣圖書的前250本圖書。為此,我們需要每頁爬取25本圖書,共爬取10頁。在每個循環中,我們根據目前頁碼計算所需的url,並呼叫get_html函數,取得HTML頁面。接著,我們將頁面傳遞給parse_html函數,解析頁面並提取所需資訊。最後,我們呼叫save_data函數,將所有圖書資訊保存到本地文件中。
- 執行程式碼
以上是Python中的爬蟲實戰:豆瓣圖書爬蟲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境