豆瓣讀書top250資料爬取與視覺化

2021-10-12 08:33:16 字數 3239 閱讀 7535

題目:根據豆瓣讀書top250,根據出版社對書籍數量分類,繪製餅圖

import scrapy

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

#terminal 終端實現

cd .

.# 跳轉到上一層目錄

scrapy startproject booktop # 和專案同名的scrapy框架專案

robotstxt_obey =

false

# 君子協議 false 不遵守

user_agent = 'mozilla/

5.0(windows nt 6.1

537.36

(khtml, like gecko) chrome/

85.0

.4183

.121 safari/

537.36'

download_delay =

0.5

#spiders資料夾下建立python檔案 bookspider.py

import scrapy

from booktop.items import bookitem

class

bookspider

(scrapy.spider)

: name=

"bookspider"

allowed_domains=

['book.douban.com'

] start_urls=

['']def

parse

(self, response,

**kwargs)

:print

(response.text)

# 測試頁面

測試:

#在terminal終端進行

cd booktop # 進入專案資料夾

scrapy crawl bookspider # 執行專案下的爬蟲(和name的值保持一致)

# 測試成功,看到頁面**

需要匯入bookitem類 檔案開頭匯入 from booktop.items import bookitem

defparse

(self, response,

**kwargs)

:#print(response.text)

# table 乙個table一本書

tables=response.xpath(

'//table'

)# css也可以

# print('書籍個數',len(tables))

# print(tables)

for t in tables:

#提取 extract()[0]

tit=t.css(

'div.pl2 a::attr(title)'

).extract()[

0]# print(title) 書名

pu=t.css(

'p.pl::text'

).extract()[

0]pu=pu.split(

'/')[-

3].strip(

)#print(pub) 出版社

yield bookitem(title=tit,pub=pu)

需要使用item物件完成資料封裝並傳輸

#items.py書寫書類

class

bookitem

(scrapy.item)

:#define the fields for your item here like:

title = scrapy.field(

) pub=scrapy.field(

)pass

# 在setting檔案下,解開注釋

item_pipelines =

資料儲存到txt檔案下

# 開啟管道檔案 booktoppipeline

class

booktoppipeline

:def

process_item

(self, item, spider)

:# 編碼格式設定為utf-8

file

=open

('result.txt'

,'a+'

,encoding=

'utf-8'

)file

.write(item[

'title']+

','+item[

'pub']+

'\n'

)return item

# 執行測試結果result.txt下有資料成功

# 在專案中建立 分析檔案 demo1.py

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import matplotlib

# 處理中文字型

font =

matplotlib.rc(

'font'

,**font)

# 讀取檔案

df=pd.read_csv(

'result.txt'

,names=

['title'

,'pub'])

# print(df)

# 福爾摩斯探案集 出版社有問題,手動修改

df.loc[8,

'pub']=

'群眾出版社'

# print(df)

# 按出版社不同分類彙總書數量,取出前5名

result=df[

'pub'

].value_counts(

).head(

)print

(result)

plt.pie(result,labels=result.index,autopct=

'%3.1f%%'

)plt.show(

)

爬取豆瓣Top250

requests庫可以自動爬取html頁面,自動網路請求提交。安裝方法 pip install requests requests庫主要有7個方法 首先開啟網頁 豆瓣top250 然後f12,得到如下圖 我們要找的內容在紅框裡面。這個頁面有25個電影,第乙個頁面 第二個頁面 我們可以觀察到 每個頁面...

爬取豆瓣top250

案例實現 需求 要爬取豆瓣top250的電影資訊資料 標題 評分 引言 詳情頁的url 10頁的資料 都要爬取 並寫入到csv檔案中 第一頁 第二頁 第三頁 第四頁 一共是250條 25頁 分析 page 1 25 總結 第乙個 str格式化的運用 解決辦法 先是找規律 進行格式化的替換 douba...

爬取豆瓣TOP250書單

小白學習爬蟲 爬取豆瓣top250的書,正好本人也喜歡看書 思路分析 這是top250第一頁的鏈結 start 25第二頁的鏈結 start 50第三頁的鏈結 將第一頁鏈結改為?start 0也是可以訪問的,每一頁數字加25,構建10頁 如下 urls start format str i for ...