python课程设计——当当⽹Python图书数据分析
零基础学c语言软件⼀、数据获取
本次项⽬数据来源为爬⾍获取,⽬标为为当当⽹上关于python的书籍
爬⾍主要思路:通过观察当当⽹,观察结构,选⽤适合的⽅法。先进⾏单页的数据爬取,再进⾏多页爬取;解析⽅法为xpath⽅法,爬取⽬标为:书名、价格、作业、出版社、出版时间、商品链接、评论数量;最后将爬取的数据保存到csv⽂件当中。
爬⾍代码如下:
import requests
from lxml import etree
import re
import csv
def get_page():
# 数据的多页爬取,经过观察,所有页⾯地址中,有⼀个唯⼀的参数page_index发⽣改变# 通过对参数page_index的for循环,遍历每⼀页的页⾯,实现多页爬取
for page in range(1,101):
url ='search.dangdang/?key=python&act=input&page_index=1'+str(
page +1)+'#J_tab'
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' }
response = (url=url, headers=headers)
parse_page(response)
# 可以在操作页⾯实时观察爬取的进度
print('page %s'% page)
def parse_page(response):
# 通过etree将图书的七项信息封装为⼀条数据,保存到data列表当中
tree = etree.)
li_list = tree.xpath('//ul[@class="bigimg"]/li')
for li in li_list:
vue生命周期的四个阶段data =[]
try:
# 通过xpath的⽅法对所需要的信息进⾏解析
# 1、获取书的标题,并添加到列表中
title = li.xpath('./a/@title')[0].strip()
data.append(title)
# 2、获取价格,并添加到列表中
price = li.xpath('./p[@class="price"]/span[1]/text()')[0]
data.append(price)
# 3、获取作者,并添加到列表中
author =''.join(li.xpath('./p[@class="search_book_author"]/span[1]//text()')).strip()            data.append(author)
# 4、获取出版社
publis =''.join(li.xpath('./p[@class="search_book_author"]/span[3]//text()')).strip()            data.append(publis)
# 5、获取出版时间,并添加到列表中
time = li.xpath('./p[@class="search_book_author"]/span[2]/text()')[0]
pub_time = re.sub('/','', time).strip()
data.append(pub_time)
# 6、获取商品链接,并添加到列表中
commodity_url = li.xpath('./p[@class="name"]/a/@href')[0]
data.append(commodity_url)
# 7、获取评论数量,并添加到列表中
unionpay metwork
comment = li.xpath('./p[@class="search_star_line"]/a/text()')[0].strip()
data.append(comment)
except:
页面模板网站推荐pass
save_data(data)
def save_data(data):
writer.writerow(data)
def main():
key ='python书籍222'# input('Please input key:')
get_page(key)
# 将所有的数据储存到csv⽂件当中
fp =open('python书籍3.csv','w', encoding='utf-8-sig', newline='')
writer = csv.writer(fp)
header =['书名','价格','作者','出版社','出版时间','商品链接','评论数量']
sweated
writer.writerow(header)
main()
fp.close()
爬⾍部分结果展⽰:
⼆、数据整理分析
本项⽬对价格、出版社以及评论进⾏分析
1、价格
(1)数据预处理
通过观察爬取下来的数据发现,部分数据存在空值,影响分析,所以多价格列进⾏简单的数据预处理操作,将有空值的整条数据删除
利⽤pandas库中的null函数查询是否有空值,有空值就将其整条数据删除
import pandas as pd
# 读取⽂件
df = pd.read_csv(r'D:\pythonApp\pyproject\我的python\⽹络⼤数据采集\dangdang\python书籍.csv')
# 对价格列进⾏操作
index = df['价格'].notnull()
df = df[index]
# 将处理好的⽂件保存为python书籍2
<_csv(r'D:\pythonApp\pyproject\我的python\⽹络⼤数据采集\dangdang\python书籍2.csv')
(2)数据分类操作
然后对价格列进⾏分类,将其分为三个类别,分别为价格在30元以下的,价格在30元到70元之间的,价格在70元以上的,注意数据的数据的类型是什么,是否需要类型的转换。
# 打开存放书籍的⽂档并读取
file=open('D:\pythonApp\pyproject\我的python\⽹络⼤数据采集\dangdang\python书籍2.csv', encoding='utf-8') fileReader = ader(file)
data =[]
# s1、s2、s3分别为30元以下,30到70元,70元以上
s1 =[]
s2 =[]
s3 =[]
filedata =list(fileReader)
for i in filedata:
# 选中价格的⼀列
m = i[1:2]
data.append(''.join(m))
for m in range(1,6000):python教程电子版书籍
# 将价格强制转换为float类型
if float(data[m])<30.00:
# 将价格低于30元的存放到s1
s1.append(data[m])
elif float(data[m])>70.00:
# 价格将⾼于70元的存放到s3
s3.append(data[m])
else:
# 将价格在30到70元的存放到s2
s2.append(data[m])
# 同时输出s1、s2、s3的长度来代表其数量
print(len(s1))
print(len(s2))
print(len(s3))
(3)数据的聚类算法
同时对价格进⾏⼀个聚类算法的运⽤,主要作⽤为练习使⽤聚类算法
import collections
import wordcloud
import matplotlib.pyplot as plt
# 存放去停⽤词
stopword_list =[]
# 存放分词
object_list =[]
# 去停⽤词
for word in open("D:\pythonApp\pyproject\我的python\⽹络⼤数据采集\",'rb'):
stopword_list.append(word.strip())
# ⽂本分词
fn =open("D:\pythonApp\pyproject\我的python\⽹络⼤数据采集\dangdang\","rb").read() seg_list_exaut = jieba.cut(fn)
for i in seg_list_exaut:
de("utf-8")not in stopword_list:
object_list.append(i)
# 词频统计、排序
word_counts = collections.Counter(object_list)
word_counts_top10 = st_common(10)
print(word_counts_top10)
# 词图云展⽰
wc = wordcloud.WordCloud(
font_path=r'C:\Windows\f',
background_color="white",
margin=5, width=1000,
height=800,
max_words=1000,
max_font_size=200)
<_file('DangDangWang_WordCloud_show.jpg')
plt.imshow(wc)
plt.axis("off")
plt.show()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。