python爬取豆瓣读书并进行图形化分析
- 豆瓣读书网页数据爬取并保存至csv
- 对数据进行分析并汇成图形
- 绘制散点图
- 图形效果展示
以下代码内容大多是团队小伙伴的杰作,而本人只是为了能让更多的人学习到知识从而能更好的解决问题,才将整个python项目完整发出。
目录结构如下:
建立一个豆瓣总文件夹,然后只需在总文件夹下面建立一个image文件夹(这是用来存放从豆瓣中下载的图片),douban.py、display.py、Work.py。其它的在代码运行之后都会自动生成。
1、豆瓣读书网页数据爬取并保存至csv
douban.py代码如下:
'''
项目:豆瓣读书分析
日期:2020/12/14
'''
import requests
from lxml import etree
import time
import csv
#信息头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
def douban_booksrank(url):
res = requests.get(url, headers=headers)
selector = etree.HTML(res.text)
contents = selector.xpath('//div[@class="article"]/div[contains(@class,"doulist-item")]') #循环点
for content in contents:
try:
title = content.xpath('div/div[2]/div[3]/a/text()')[0].strip() #书名
scores = content.xpath('div/div[2]/div[4]/span[2]/text()') #评分
scores.append('9.0') #因为有一些书没有评分,导致列表为空,此处添加一个默认评分,若无评分则默认为9.0
score = scores[0]
comments = content.xpath('div/div[2]/div[4]/span[3]/text()')[0] #评论数量
author = content.xpath('div/div[2]/div[5]/text()[1]')[0].strip() #作者
#利用str的区间索引去除作者:
real_author=author[3:]
publishment = content.xpath('div/div[2]/div[5]/text()[2]')[0].strip() #出版社
real_publishment=publishment[4:]
pub_year = content.xpath('div/div[2]/div[5]/text()[3]')[0].strip() #出版时间
real_year = pub_year[4:]
img_url = content.xpath('div/div[2]/div[2]/a/img/@src')[0].strip() #书本图片