日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

豆瓣图书Top250

發布時間:2024/1/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 豆瓣图书Top250 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從豆瓣圖書Top250抓取數據,并通過詞云圖展示

導入庫

from lxml import etree #解析庫 import time #時間 import random #隨機函數 import pandas as pd import requests #請求庫 import jieba #導入結巴分詞 from pyecharts.charts import WordCloud from pyecharts import options as opts

抓取數據

#循環構造網址 def format_url(base_url,pages=10):urls=[]for num in range(0,pages * 25,25):urls.append(base_url.format(num))return urls#解析單個頁面 def parse_page(url,headers):#創建一個存儲結果的容器result=pd.DataFrame()html=requests.get(url,headers=headers)bs=etree.HTML(html.text)for i in bs.xpath('//tr[@class="item"]'):#書籍中文名book_ch_name=i.xpath('td[2]/div[1]/a[1]/@title')[0]#評分score=i.xpath('td[2]/div[2]/span[2]')[0].text#書籍信息book_info=i.xpath('td[2]/p[@class="pl"]')[0].text#評價數量由于數據不規整,使用字符串方法進行數據處理comment_num=i.xpath('td[2]/div[2]/span[3]')[0].text.replace(' ','').strip('(\n').strip('\n)')try:#一句話概括brief=i.xpath('td[2]/p[@class="quote"]/span')[0].textexcept:brief=None#這里的cache是存儲每一循環的結果,然后通過下一步操作循環更新result里面的數據cache=pd.DataFrame({'中文名':[book_ch_name],'評分':[score],'書籍信息':[book_info],'評價數量':[comment_num],'一句話概括':[brief]})result=pd.concat([result,cache])return result#主函數 def main():final_result=pd.DataFrame()base_url='https://book.douban.com/top250?start={}'headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}urls=format_url(base_url,pages=10)for url in urls:res=parse_page(url,headers=headers)final_result=pd.concat([final_result,res])time.sleep(random.random()*3)return final_result#運行函數 if __name__ == "__main__":final_result = main()

提取詞云圖要展示的數據

#提取書名、評分、評價數量 book_top250=final_result[['中文名','評分','評價數量']]#將書名轉為列表 book_name=book_top250['中文名'].tolist()#將評分轉為列表 book_score=book_top250['評分'].tolist()#將評價人數轉為列表 book_comment_num=book_top250['評價數量'].tolist() #去除多余字符"人評價" book_comment_num=[x.strip("人評價") for x in book_comment_num if x.strip()!='']#用for循環合并數據 a=[z for z in zip(book_name,book_comment_num)]

繪圖設置

c=(#WordCloud類的實例化WordCloud()#添加圖名稱、數據、字體的隨機大小、圖像類型.add("",a,word_size_range=[5,50],shape="diamond")#設置標題.set_global_opts(title_opts=opts.TitleOpts(title="豆瓣圖書Top250")) )

結果展示

c.render_notebook()

參考來源:
微信公眾號:數據不吹牛(shujubuchuiniu)
https://blog.csdn.net/weixin_40864434/article/details/90301592

轉載于:https://www.cnblogs.com/hankleo/p/11408811.html

總結

以上是生活随笔為你收集整理的豆瓣图书Top250的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。