嗨喽,大家好呀~这里是爱看美女的茜茜呐
本次采集网介绍:图书频道-全球最大中文网上书店
专业提供小说传记,青春文学,成功励志,投资理财等各品类图书
畅销榜最新报价、促销、评论信息,引领最新网上购书体验!
Python 3.8
Pycharm
requests >>> pip install requests
parsel >>> pip install parsel
csv
请求这个网站 就可以得到我们想要数据内容
发送请求, 模拟浏览器对于url发送请求
获取数据, 获取服务器返回响应数据 —> 开发者工具里面response
解析数据, 提取我们想要数据内容, 书籍基本信息
保存数据, 保存表格里面
网址里的网名被我删啦,你可以看一下它的链接如何的然后自己添加一下
具体爬的什么网站我会在评论区打出~大家注意看哦
如果你实在不会或有点点小懒癌的小可耐也可以私聊我领取完整源码哦~ 🎠
# 导入数据请求模块 ---> 第三方模块 需要 在cmd 里面 pip install requests
import requests
# 导入数据解析模块 ---> 第三方模块 需要 在cmd 里面 pip install parsel
import parsel
# 导入csv模块 ---> 内置模块 不需要安装
import csv# 创建文件
f = open('书籍data25页.csv', mode='a', encoding='utf-8', newline='')
# f文件对象 fieldnames 字段名 ---> 表格第一行 作为表头
csv_writer = csv.DictWriter(f, fieldnames=['标题','评论','推荐','作者','日期','出版社','售价','原价','折扣','电子书','详情页',
])
# 写入表头
csv_writer.writeheader()
"""
1. 发送请求, 模拟浏览器对于url发送请求- 等号左边是定义变量名- 模拟浏览器 ---> 请求头headers ---> 在开发者工具里面复制粘贴 字典数据类型一种简单反反爬手段, 防止被服务器识别出来是爬虫程序- 使用什么请求方式, 根据开发者工具来的
"""
for page in range(1, 26): # 1,26 是取1-25的数字, 不包含26# 确定请求网址url = f'bang./books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-{page}'# 模拟浏览器 ---> 请求头headers = {# User-Agent 用户代理 表示浏览器基本身份标识'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}# 发送请求 返回的响应对象 ---> <Response [200]>: <> 表示对象 response 响应回复 200状态码 表示请求成功response = (url=url, headers=headers)print(response)# 2. 获取数据, 获取服务器返回响应数据 ---> 开发者工具里面 response )"""3. 解析数据, 提取我们想要数据内容, 书籍基本信息根据得到数据类型以及我们想要数据内容, 选择最适合解析方法:- re正则表达式- css选择器- xpathxpath ---> 根据标签节点提取数据css选择器 ---> 根据标签属性提取数据内容css语法匹配 不会 1 会的 2复制粘贴会不会 ---> ctrl + C ctrl + v"""# 转数据类型 <Selector xpath=None data='<html xmlns="...'>selector = parsel.)# 第一次提取 提取所有li标签 --> 返回列表, 元素Selector对象lis = selector.css('.bang_list_mode li')# for循环遍历 之后进行二次提取 我们想要内容for li in lis:"""attr() 属性选择器 a::attr(title) ---> 获取a标签里面title属性get() 获取一个 第一个 """title = li.css('.name a::attr(title)').get() # 标题star = li.css('.star a::text').get().replace('条评论', '') # 评论recommend = li.css('.tuijian::text').get().replace('推荐', '') # 推荐author = li.css('.publisher_info a::attr(title)').get() # 作者date = li.css('.publisher_info span::text').get() # 日期press = li.css('div:nth-child(6) a::text').get() # 出版社price_n = li.css('.price .price_n::text').get() # 售价price_r = li.css('.price .price_r::text').get() # 原价price_s = li.css('.price .price_s::text').get().replace('折', '') # 折扣price_e = li.css('.price .price_e .price_n::text').get() # 电子书href = li.css('.name a::attr(href)').get() # 详情页# 保存数据dit = {'标题': title,'评论': star,'推荐': recommend,'作者': author,'日期': date,'出版社': press,'售价': price_n,'原价': price_r,'折扣': price_s,'电子书': price_e,'详情页': href,}# 写入数据csv_writer.writerow(dit)print(title, star, recommend, author, date, press, price_n, price_r, price_s, price_e, href, sep=' | ')
源码、解答、教程加Q裙:261823976 点击蓝字加入【python学习裙】
# 导入数据请求模块
import time

import requests
import re
for page in range(1, 11):time.sleep(1.5)# 确定网址url = 'product./index.php'# 请求参数data = {'r': 'comment/list','productId': '27898031','categoryPath': '01.43.77.07.00.00','mainProductId': '27898031','mediumId': '0','pageIndex': page,'sortType': '1','filterType': '1','isSystem': '1','tagId': '0','tagFilterCount': '0','template': 'publish','long_or_short': 'short',}headers = {'Cookie': '__permanent_id=20220526142043051185927786403737954; dest_area=country_id%3D9000%26province_id%3D111%26city_id%20%3D0%26district_id%3D0%26town_id%3D0; ddscreen=2; secret_key=f4022441400c500aa79d59edd8918a6e; __visit_id=20220723213635653213297242210260506; __out_refer=; pos_6_start=1658583812022; pos_6_end=1658583812593; __trace_id=20220723214559176959858324136999851; __rpm=p_27898031ment_body..1658583937494%7Cp_27898031ment_body..1658583997600','Host': 'product.dangdang','Referer': '.html','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',}response = (url=url, params=data, headers=headers)html_data = response.json()['data']['list']['html']content_list = re.findall("<span><a href='.*?' target='_blank'>(.*?)</a></span>", html_data)for content in content_list:with open('评论.txt', mode='a', encoding='utf-8') as f:f.write(content)f.write('n')print(content)
import jieba
import wordcloud
import imageio
# 读取图片
py = imageio.imread('python.png')
# 打开文件
f = open('评论.txt', encoding='utf-8')
# 读取内容
txt = f.read()
# jieba模块进行分词 ---> 列表
txt_list = jieba.lcut(txt)
print(txt_list)
# join把列表合成字符串
string = ' '.join(txt_list)
# 使用词云库
wc = wordcloud.WordCloud(height=300, # 高度width=500, # 宽度background_color='white', # 背景颜色font_path=', # 字体scale=15, # 轮廓stopwords={'的', '了', '很', '也'}, # 停用词mask=py # 自定义词云图样式
)
wc.generate(string) # 需要做词云数据传入进去
wc.to_file('1.png') # 输入图片
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。
最后,博主要一下你们的三连呀(点赞、评论、收藏),不要钱的还是可以搞一搞的嘛~
不知道评论啥的,即使扣个6666也是对博主的鼓舞吖 💞 感谢 💐
本文发布于:2024-01-29 17:35:13,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170652091817119.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |