Python实训day04pm【网络爬虫(文本、图片)】
- Python实训-15天-博客汇总表
目录
1、网络爬虫
1.1、爬取文本
1.2、爬取图片
2、其他知识点
- 上午题目讲解
- 昨天的基础题目讲解
- 爬取非文本(图片)
1、网络爬虫
#bili 视频,爬下来 【能】【很多代码】【我不会,懒得研究,很费劲。】
# 非文本爬取
#图片、音频、视频、文档等
#实现批量自动化下载实现步骤:
- 获取资源的路径 url
- 访问地址,得到数据(字节序列)
- 本地存储(写文件)
1.1、爬取文本
- 打印全部的20本书的书名。
- 在打印书名时,打印每本书的价格。
- 将排名前100的书的(书名和价格)全部打印出来。提醒:第3问,可以需要循环爬取(爬取5次才能得到排名前100的书籍信息)。
- 将这100本数的书名和价格,爬出来并且写入到本地的txt文档中。
爬取豆瓣前100的图书和价格并且本地化写入文件:
- 爬取html
- BeautifulSoup对html解析
- 找到我们需要的数据
- 对数据进行处理
'''
1.打印全部的20本书的书名。√
2.在打印书名时,打印每本书的价格。√
3.将排名前100的书的(书名和价格)全部打印出来。提醒:第3问,可以需要循环爬取(爬取5次才能得到排名前100的书籍信息)。√
4.将这100本数的书名和价格,爬出来并且写入到本地的txt文档中。√爬取豆瓣前100的图书和价格并且本地化写入文件
1.爬取html
2.BeautifulSoup对html解析
3.找到我们需要的数据
4.对数据进行处理
'''
import requestsfrom bs4 import BeautifulSoup as BS# 伪装成浏览器
hds = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}# 存放爬取到的书的信息
books = {};# 分5次,爬取100条数据
for i in range(5):url = 'https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start={}&type=T'.format(i * 20);resp = requests.get(url, headers=hds);# print(resp.status_code) # 200正确接收到了响应结果ct = resp.content.decode('utf-8');# print(ct); # 爬取下来的html代码html = BS(ct, 'lxml'); # 用BeautifulSoup解析html代码# 选择器定位目标元素:[所有a标签]sa = html.select('.subject-item .info h2 a') # 爬取a标签的内容# print(len(sa)) # 确认一下【尤其是自己写代码时】打印选择器个数20# 定位价格ps = html.select('.subject-item .info .pub');# print(len(ps)) # 确认一下【尤其是自己写代码时】打印选择器个数20for i in range(len(sa)):a = sa[i];p = ps[i];bookname = a['title']; # 通过[属性名]来获取属性值price = p.get_text().replace(' ', '').replace('\n', '');price = price.split('/')[-1].replace('元', '');books[bookname] = price;# print(books)
# print(list(books.items()))# 将数据写入文件
f = open(r'C:\Users\lwx\Desktop\books.txt', 'w');
for b in list(books.items()):f.write(b[0] + ':' + b[1] + '\n');
f.close()print("文本爬取完成~")# for a in sa:
# # bookname = a.get_text().replace(' ','').replace('\n','');
# bookname = a['title']; # 通过[属性名]来获取属性值
# print(bookname);
#
# for p in ps:
# price = p.get_text().replace(' ', '').replace('\n', '');
# # 按斜杠/分割,拿取最后一个元素
# price = price.split('/')[-1].replace('元', '');
# print(price)
1.2、爬取图片
'''
非文本爬取图片、音频、视频、文档等实现批量自动化下载
1.获取资源的路径 url
2.访问地址,得到数据(字节序列)
3.本地存储(写文件)
'''import requests
from bs4 import BeautifulSoup as BS # as BS取别名# 伪装成浏览器
hds = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}us = [];# 分5次,爬取100条数据
for i in range(5):url = 'https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start={}&type=T'.format(i * 20);resp = requests.get(url, headers=hds);ct = resp.content.decode('utf-8');html = BS(ct, 'lxml');# 选择器定位目标元素 [所有img标签]imgs = html.select('.subject-item .pic img')# print(len(sa)) # 确认一下for img in imgs:img_url = img['src']; # 获取属性值us.append(img_url);# 逐个请求us中的地址,得到数据
# 存储到本地(写文件)
i = 1;
for u in us:# 爬地址resp = requests.get(u, headers=hds);ct = resp.content; # 此处就没有decode了,因为爬取的是图片,非文本,不能解码# 本地写入f = open(r'C:\Users\lwx\Desktop\books\{}{}'.format(i, '.jpg'), 'wb');f.write(ct);f.close();print("下载完毕:", i)i = i + 1;print("图片爬取完毕~")
2、其他知识点
Python正则表达式: Python 正则表达式 | 菜鸟教程
Python实训day04pm【网络爬虫(文本、图片)】相关推荐
- Python实训day04am【爬虫介绍、爬取网页测试、Python第三方库】
Python实训-15天-博客汇总表 目录 1.文本文件编程题 2.爬虫(Scrapy) 2.1.安装第三方库 2.2.爬取网页测试 2.2.1.样例1 2.2.2.样例2 3.PyCharm导入第三 ...
- Python实训-15天-博客汇总表
目录 1.课程安排 1.1.课程介绍 1.2.课程目标 2.课件 2.1.课件and录屏 2.2.练习and案例and作业 3.实训博客笔记 第1周-week1 day01 day02 day03 d ...
- Python实训day08am【网络爬虫selenium、图像处理入门】
Python实训-15天-博客汇总表 目录 1.网络爬虫-selenium(歌曲与歌词) 2.图像处理 2.1.安装库 2.2.图片处理 2.3.马赛克 2.4.副本-缩略图-粘贴-创建新图 2.5. ...
- Python实训day13am【Python网络爬虫综合大作业PPT】
Python实训-15天-博客汇总表 今天上午大家抓紧时间继续完成实训报告和PPT,有问题我会在群里跟大家说明, 暂时不用上线直播了. 实训结束后,我会在博客上发布网络爬虫综合大作业题目及解析.
- Python实训day06am【网络爬虫(爬取接口)】
Python实训-15天-博客汇总表 目录 1."from bs4 import BeautifulSoup"解析 2.字体反爬虫 3.网络爬虫 3.1.直接爬取页面html-爬取 ...
- Python实训day05pm【JS-DOM-获取元素节点对象、网络爬虫】
Python实训-15天-博客汇总表 目录 1.CSS选择器 2.网络爬虫 2.1.练习1 2.2.练习2 1.CSS选择器 .rank-body .book-mid-info .author a:n ...
- Python实训day14pm【Python网络爬虫综合大作业-参考解析】
Python实训-15天-博客汇总表 题目:天气数据的爬取和统计 大作业题目思路引导:定时爬取每个地级市的实时天气状况.存入excel中.为每个城市生成html展示.历史excel文件以每日为单位归档 ...
- Python实训day12am【网络爬虫大作业简略解析:动态生成html页面、数据写入Excel】
Python实训-15天-博客汇总表 目录 1.HTML页面设计 2.生成每个城市的HTML页面 2.1.HTML页面代码(weatherTemplate.html) 2.2.实例代码-动态生成htm ...
- Python实训day06pm【网络爬虫(爬取接口)-爬取图片与数据】
Python实训-15天-博客汇总表 目录 练习1 练习2 练习1 ''' 课堂练习2:爬取lol英雄的头像.BP的音乐. 需要找数据接口:https://101.qq.com/#/hero ''' ...
最新文章
- 第七篇 JVM核心机制之JVM运行和类加载全过程(二)
- 异配图神经网络小结:突破同配性,拥抱异配性
- matlab 二值化_撸了一份 ostu二值化,需要的小伙伴请拿走
- 类加载器-双亲委派-源码分析1
- 【Redis】redis开机自启动、设置守护进程、密码设置、访问权限控制等安全设置(redis默认端口6379)...
- ASP.NET MVC Global.cs - 应用程序事件
- 大连工业大学艺术学院计算机考试,大连工业大学艺术与信息工程学院应用科技学院...
- webpack devserver配置_在webpack中使用babel
- 国家网信办:掌握超过100万用户个人信息运营者赴国外上市需申报审查
- mysql mssql 性能对比_详解mysql分区实验测试--非分区表与分区表的性能对比
- vant中picker选择器
- 你这手写vue2.x/3.x的响应式保熟吗?
- 12306网站 =≈=泄露用户信息解读之撞库
- 如何快速解决 Mybatis 异常:Invalid bound statement (not found)
- 基于stm32的智能小车(远程控制、避障、循迹)
- C++获取电脑主板唯一标识
- 解锁电机气隙公差分析之奥秘!
- 2014 360校园招聘技术类面试题
- 4 变量、作用域与内存
- 探访安徽休宁的传统小吃:古法舂碓麻糕迎新年
热门文章
- 合并工具_分享一个SM to HISM合并工具
- java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
- java resources 路径_Java工程读取resources中资源文件路径问题
- 2.利用计算机进行信息加工的一般过程是:,[信息技术教案]《计算机信息加工的一般过程》教案...
- devc++源文件未编译_悬赏万元,重现「木兰」编程语言编译器
- 【推荐系统】推荐系统评测指标
- 记录 关于浏览器跨域和设置默认浏览器的问题
- 九十六、轻松搞定Python中的PPT办公自动化系列
- 图马尔可夫网络:融合统计关系学习与图神经网络
- 重磅!2021 高通人工智能应用创新大赛今日开赛