豆瓣图书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].text
        except:
            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

时间: 2024-10-19 19:58:31

豆瓣图书Top250的相关文章

Python 2.7_利用xpath语法爬取豆瓣图书top250信息_20170129

大年初二,忙完家里一些事,顺带有人交流爬取豆瓣图书top250 1.构造urls列表 urls=['https://book.douban.com/top250?start={}'.format(str(i) for i in range(0, 226, 25))] 2.模块 requests获取网页源代码 lxml 解析网页 xpath提取 3.提取信息 4.可以封装成函数 此处没有封装调用 python代码: #coding:utf-8 import sys reload(sys) sys.

python爬虫——豆瓣图书top250信息

# -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf-8') class Spider(object): def __init__(self): print('开始爬取豆瓣图书top250的内容......') # 传入url,返回网页源代码 def getSourceCode(self, url): html = requests.get(url)

【爬虫】爬取豆瓣图书TOP250

通过xpath定位元素 使用xpath定位元素有好几种方法 // 是从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置. #!/user/bin/env python #coding:utf-8 #先是从selenium导入webdriver,然后用webdriver打开安装好的谷歌浏览器. from selenium import webdriver #打开chrom浏览器 browser =webdriver.Chrome() #访问豆瓣 browser.get('https://bo

爬虫-爬取豆瓣图书TOP250

import requests from bs4 import BeautifulSoup def get_book(url): wb_data = requests.get(url) soup = BeautifulSoup(wb_data.text,'lxml') title_list = soup.select('h1 > span') title = title_list[0].text author_list = soup.select('div#info > a') author

今天懒一次 豆瓣电影Top250

今天不写代码,休息一下 1 import requests 2 from lxml import etree 3 from urllib import parse 4 offset = -25 5 i = 0 6 url = 'https://movie.douban.com/top250?start=' 7 8 while offset < 225: 9 offset += 25 10 11 start_urls = (url+str(offset)) 12 headers = { 13 'U

33、豆瓣图书短评

练习介绍 要求: 本练习需要运用scrapy的知识,爬取豆瓣图书TOP250(https://book.douban.com/top250  )前2页的书籍(50本)的短评数据存储成Excel 书名 评论ID 短评内容 1.创建爬虫项目 1 D:\USERDATA\python>scrapy startproject duanping 2 New Scrapy project 'duanping', using template directory 'c:\users\www1707\appda

爬取豆瓣网图书TOP250的信息

爬取豆瓣网图书TOP250的信息,需要爬取的信息包括:书名.书本的链接.作者.出版社和出版时间.书本的价格.评分和评价,并把爬取到的数据存储到本地文件中. 参考网址:https://book.douban.com/top250 注意:使用正则表达式时,不要在Elements选项卡中直接查看源代码,因为那的源码可能经过Javascript渲染而与原始请求不同,而是需要从Network选项卡中查看源码. import re import json import time import request

八爪鱼采集教程——如何采集豆瓣图书评价

豆瓣图书评价如何采集 豆瓣是一个集品味系统(读书.电影.音乐).表达系统(我读.我看.我听)和交流系统(同城.小组.友邻)于一体的创新网络服务,致力于帮助都市人群发现生活中有用的事物.今天教大家怎么通过对豆瓣里面的图书评价信息采集,找一本适合自己的书. 方法/步骤 1.首先注册账号激活并登录 2.登陆后在八爪鱼采集软件界面左侧的菜单栏可以找到"采集规则"一项,小伙伴们可以先进入规则市场中搜索一下,自己想要采集的平台是否已经有现成的规则可借鉴.如果有,可以直接下载后导入新的任务即可使用,

Node.js学习 爬虫下载豆瓣电影top250图片

利用node.js实现爬虫,并且爬取豆瓣电影top250的列表和图片. 1 什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎 2 什么是爬虫 (又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 3