Python 爬虫爬取当当网(python培训)

网友投稿 253 2022-08-22


Python 爬虫爬取当当网(python培训)

一、模块使用

requests >>> pip install requests   parsel >>> pip install parsel   csv

win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

二、模块安装问题

- 失败二: 出现大量报红 (read time out)             解决方法: 因为是网络链接超时,  需要切换镜像源                 清华:https://pypi.tuna.tsinghua.edu.cn/simple                 阿里云:https://mirrors.aliyun.com/pypi/simple/                 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/                 华中理工大学:https://pypi.hustunique.com/                 山东理工大学:https://pypi.sdutlinux.org/                 豆瓣:https://pypi.douban.com/simple/                 例如:pip3 install -i 模块名

- 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入             解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好                     或者你pycharm里面python解释器没有设置好

三、如何配置pycharm里面的python解释器

四、pycharm如何安装插件

五、爬虫基本流程

(1). 数据来源分析 <重要...>     1. 要分析自己想要数据内容, 可以请求那个url地址得到相应数据         开发者 不会2  会用1         1. F12打开开发者工具, 刷新网页         2. 通过关键字搜索, 找寻数据包

(2). 代码实现步骤过程     1. 发送请求, 模拟浏览器对于url地址发送get请求     2. 获取数据, 获取服务器返回响应数据 ---> 开发者工具里面response     3. 解析数据, 提取我们想要数据内容     4. 保存数据, 把数据保存csv表格

六、完整代码

# 导入数据请求模块 ---> 需要 pip install requestsimport requests# 导入数据解析模块 ---> 需要 pip install parselimport parsel# 导入csv模块import csv# 导入时间模块import time# 创建文件 data.csv 文件名 mode='a' 保存方式 encoding='utf-8' 编码格式 newline='' 新队列f = open('data.csv', mode='a', encoding='utf-8', newline='')# 字典写入 f 文件对象 fieldnames 字段名 表格第一行数据 表头csv_writer = csv.DictWriter(f, fieldnames=[ '书名', '评论', '推荐', '作者', '时间', '出版社', '售价', '原价', '折扣', '电子书', '详情页',])# 写入表头csv_writer.writeheader()"""发送请求, 模拟浏览器对于url地址发送get请求 为什么要模拟浏览器? 为了防止被反爬 """for page in range(1, 26): print(f'正在采集第{page}页的数据内容') # 确定网址 url = f' # 请求头 ---> 字典数据类型, 构建完整键值对 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 = requests.get(url=url, headers=headers) # 响应对象 200 状态码 表示请求成功 print(response) # 获取数据, 获取服务器返回响应数据 ---> 开发者工具里面response response.text ---> 文本数据 字符串数据 # print(response.text) # 解析数据 parsel(解析模块) --> css选择器 xpath 转换解析对象 相当于在一个箱子里面, 把苹果一个一个拿出来 for li in lis: # title是a标签里面什么东西? 属性 ---> attr() 提取标签里属性 title = li.css('.name a::attr(title)').get() # 书名 comment = 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, '评论': comment, '推荐': recommend, '作者': author, '时间': date, '出版社': press, '售价': price_n, '原价': price_r, '折扣': price_s, '电子书': price_e, '详情页': href, } # 快速复制一行 ctrl + D csv_writer.writerow(dit) print(title, comment, recommend, author, date, press, price_n, price_r, price_s, price_e, href)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:对象实例存储数据库ZODB(常见的数据库对象)
下一篇:Java 全面系统介绍反射的运用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~