关键词搜索

源码搜索 ×
×

Python爬虫豆瓣网热门话题保存文本本地数据,并实现简单可视化。

发布2021-08-18浏览452次

详情内容

前言

今天给大家分享Python爬虫豆瓣网热门话题保存文本本地数据

开发环境:

windows10
python3.6.4

开发工具:

pycharm
库:
requests、WordCloud、pandas、jieba

代码展示

在这里插入图片描述

词云生成

在这里插入图片描述

爬虫代码过程

1、保存短评数据

通过浏览器“检查”分析,得到URL数据接口。在不断往下刷新页面的过程中,发现URL中只有“start”参数不断产生变化,依次为0,20,40,60,80---

同时,为了破解“豆瓣”的防爬虫机制,请求数据时需携带“请求头(headers)”中的“User-Agent”和“Referer”两个参数。

在这里插入图片描述

源码

  1. import requests
  2. for i in range(0,200,20):
  3. # 通过浏览器检查,得到数据的URL来源链接
  4. url = 'https://m.douban.com/rexxar/api/v2/gallery/topic/125573/items?' \
  5. 'sort=new&start={}&count=20&status_full_text=1&guest_only=0&ck=null'.format(i)
  6. # 破解防爬虫,带上请求头
  7. # 这两个不能省略
  8. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0".3809.100 Safari/537.36',
  9. 'Referer': 'https://www.douban.com/gallery/topic/125573/?from=gallery_trend&sort=hot'}
  10. # 发送请求,获取响应
  11. reponse = requests.get(url, headers=headers)
  12. html = reponse.json()
  13. # 解析数据,获得短评
  14. # 保存到本地
  15. for j in range(19):
  16. abs = html['items'][j]['abstract']
  17. with open("want_after.txt", "a", encoding='utf-8') as f:
  18. f.write(abs)
  19. print(abs)

2、词云可视化

把数据保存之后,需要利用“jieba”对数据进行分词;进而,通过分词后的数据绘制词云“wordcloud”,可视化展示数据。

  1. from wordcloud import WordCloud
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. import jieba
  5. # 获得wordcloud 需要的 文本格式
  6. with open("want_after.txt", "r", encoding='utf-8') as f:
  7. text = ' '.join(jieba.cut(f.read(),cut_all=False))
  8. # print(text)
  9. backgroud_Image = plt.imread('豆瓣.jpg') # 背景图
  10. # 词云的一些参数设置
  11. wc = WordCloud(
  12. background_color='white',
  13. mask=backgroud_Image,
  14. font_path='SourceHanSerifCN-Medium.otf',
  15. max_words=200,
  16. max_font_size=200,
  17. min_font_size=8,
  18. random_state=50,
  19. )
  20. # 生成词云
  21. word_cloud = wc.generate_from_text(text)
  22. plt.imshow(word_cloud)
  23. plt.axis('off')
  24. wc.to_file('结果.jpg')

在这里插入图片描述

3、高频词统计

  1. # 看看词频高的有哪些
  2. process_word = WordCloud.process_text(wc, text)
  3. sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
  4. sort_after = sort[:50]
  5. print(sort_after)
  6. # 把数据存成csv文件
  7. df = pd.DataFrame(sort_after)
  8. # 保证不乱码
  9. df.to_csv('sort_after.csv', encoding='utf_8_sig')

在这里插入图片描述
文章到这里就结束了,感谢你的观看,下篇文章分享Python 爬取鲁迅先生《经典语录》

为了感谢读者们,我想把我最python教程近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载