浅学 ------ 爬虫(一)
文章目录
- 初始爬虫
- 爬虫的工作原理
- 爬虫的三个步骤:
- requests库
- PyCharm安装requests
- requests.get() 方法
- res.status_code
- res.text
- res.content
- res.encoding
初始爬虫
爬虫的工作原理
爬虫可以像浏览器一样向服务器发起请求,拿到服务器返回的数据后,可以根据我们设定的规则去提取需要的数据,数据处理完成后再将数据存储起来。
相当于浏览器
爬虫的三个步骤:
1、获取数据
2、处理数据
3、存储数据
第一步:获取数据,爬虫会根据我们提供的网址,向服务器发起请求获取数据;
第二步:处理数据,对获取的数据进行处理,得到我们需要的部分;
第三步:存储数据,将处理后的数据保存起来,便于后续的使用和分析等。
爬虫中最常用的发起请求的第三方库——requests
requests库
PyCharm安装requests
requests.get() 方法
第一步 获取数据
import requests # 导入 requests 模块res = requests.get('url') # 发起请求
print(res)
# 输出:<Response [200]>
使用 requests.get(‘网站地址’) 方法向对应的网站发起了请求,然后我们将返回的结果存到了变量 res 中供后续使用。它的类型是 Response 对象,后面的 200 是状态码
通过 requests.get() 方法获取到了网页的数据,作为 Response 对象存到了变量 res
Response 对象的常用属性:
属性 含义res.status_code 响应的 HTTP 状态码res.text 响应内容的字符串形式res.content 响应内容的二进制形式res.encoding 响应内容的编码
res.status_code
import requests res = requests.get('url')
print(res)
输出:<Response [200]>
这里的 200 就是响应的状态码,表示请求成功。当请求失败时会有不同的状态码,不同的状态码有不同的含义
响应状态码 含义 例子 含义1xx 消息 100 继续发出请求2xx 请求成功 200 请求成功3xx 重定向 301 永久重定向4xx 客户端错误 404 找不到资源 5xx 服务器错误 503 服务不可用
res.text
res.text 返回的是服务器响应内容的字符串形式,也就是文本内容。
import requestres = request.get('url')
print(res.text)
例子:
import requests
# 获取小说数据
res = requests.get('url') #小说的网址
# 以写入的方式打开一个名为小说的 txt 文档
with open('小说.txt','w') as file:#将数据的字符串形式写入文件中file.write(res.text)
涉及到文件操作。
open() 函数是 Python 中的内置函数,用于打开文件,返回值是一个 file 对象。
open() 函数接收的第一个参数为文件名,第二个参数为文件打开模式。打开模式默认为 r,是 read 的缩写,表示只读模式。即只能读取内容,不能修改内容。
常用的打开模式有 w(write,只写模式)、b(binary,二进制模式)和 a(append,追加模式,表示在文件末尾写入内容,不会从头开始覆盖原文件)。
Tips:在 w 和 a 模式下,如果你打开的文件不存在,那么 open() 函数会自动帮你创建一个。
这些打开模式还能两两组合,比如:rb 表示以二进制格式打开文件用于读取,wb 表示以二进制格式打开文件用于写入,ab 表示以二进制格式打开文件用于追加写入。
注意:使用 open() 函数打开文件,操作完毕后,最后一定要调用 file 对象的 close() 方法关闭该文件。
#读取文件
file = open('文本.txt') # 打开模式默认为 r,可省略
print(file.read()) # 调用 read() 方法读取文件内容
file.close() # 关闭文件#写入文件
file = open('文本.txt','w') # 写入模式
file.write('hello world!') #调用 write() 方法写入内容
file.close() # 关闭文件
为了避免忘记调用 close() 方法关闭文件,导致资源占用、文件内容丢失等问题,推荐使用 with … as … 语法,它在最后会自动帮你关闭文件。
import requests
# 获取小说数据
res = requests.get('url') #小说网址
# 以写入的方式打开一个名为小说的 txt 文档
with open('小说.txt', 'w') as file:# 将数据的字符串形式写入文件中file.write(res.text)
获取到网页的响应后,以写入模式打开一个名为 小说.txt 的文件,然后调用 write() 方法将响应内容的字符串形式写入到文件中,实现了小说的下载。同理,所有文本内容都可以通过这种方式进行下载,只需将 res.text 写入到文件当中保存即可。
res.content
除了文本内容的下载,爬虫还能下载图片、音频、视频等。
import requests
#获取图片数据
res = requests.get('url') #图片网页
#以二进制写入的方式打开一个名为 photo.jpg 的文件
with open('photo.jpg','wb') as file:file.write(res.content)
和下载小说的步骤几乎一样。区别在于图片是用二进制写入的方式,将数据的二进制形式写入文件当中,而不是字符串形式。
res.text 和 res.content 的区别是:res.text 用于文本内容的获取、下载,res.content 用于图片、音频、视频等二进制内容的获取、下载。
res.encoding
res.encoding 就是爬虫获取到数据的编码格式,requests库会根据内容推测编码格式是什么,然后将res.encoding设成推测的格式,在访问res.text时使用该格式解码。
通过手动设置编码格式的方式解码乱码的问题。
import requests
res = requests.get('url')
res.encoding = 'utf-8'
print(res.text)
浅学 ------ 爬虫(一)相关推荐
- (7) 浅学 “爬虫” 过程 (概念+练习)
爬虫:请求网站并提取数据的自动化程序. 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程. 目录 爬虫的分类 Robots协议 常用请求头/响应头.http/s.加密方式 urllib ...
- python爬虫笔记——Scrapy框架(浅学)
一.创建Scrapy爬虫项目 步骤: 安装scrapy:在pycharm项目(自己新建的爬虫项目)的终端输入 pip install scrapy 创建爬虫项目:同样在终端输入 scrapy star ...
- 一起学爬虫(Python) — 16 梅开二度,猫眼票房!
一起学爬虫(Python) - 19 年轻人,进来学自动化 前言 咳咳,本来今天是没想更新的,因为我发现如果不更新涨粉速度比日更要快的多,是的你没听错,经过一天两天的咕咕咕,阅读量是蹭蹭蹭的上去了. ...
- 老司机带你学爬虫——Python爬虫技术分享
什么是"爬虫"? 简单来说,写一个从web上获取需要数据并按规定格式存储的程序就叫爬虫: 爬虫理论上步骤很简单,第一步获取html源码,第二步分析html并拿到数据.但实际操作,老 ...
- python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章
原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...
- 这年头学爬虫还就得会点 scrapy 框架
Hello,我是 Alex 007,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了. 这几天一直在练车,只能在中间休息的时候写一写博客,可怜去年报的名到 ...
- [大数据之Yarn]——资源调度浅学
在hadoop生态越来越完善的背景下,集群多用户租用的场景变得越来越普遍,多用户任务下的资源调度就显得十分关键了.比如,一个公司拥有一个几十个节点的hadoop集群,a项目组要进行一个计算任务,b项目 ...
- 浅学JavaScript
JavaScript是互联网上最流行的脚本语言,可广泛用于服务器.PC.笔记本电脑智能手机等设备: 对事件的反应: <!DOCTYPE html> <html> <hea ...
- java学习_Python基础学习教程:从0学爬虫?让爬虫满足你的好奇心
Python基础学习教程:从0学爬虫?让爬虫满足你的好奇心 有必要学爬虫吗? 我想,这已经是一个不需要讨论的问题了. 爬虫,"有用"也"有趣"! 这个数据为王的 ...
最新文章
- 关于学习Python的一点学习总结(21->并行迭代)
- Centos6.x终端中文乱码
- 《Go语言圣经》学习笔记 第二章 程序结构
- git常用配置(指令)
- 在Python中有效使用JSON的4个技巧
- mysql aes encrypt_mysql加密函数aes_encrypt()和aes_decrypt()使用教程
- Javaweb之session创建销毁问题
- mysql如何选择多个表_从两个表mysql中选择多行
- Zabbix 监控LVS连接的状态
- CMD-CMD命令之新建一个用户!
- Python新闻网站项目-3.Gerapy爬虫分布式部署
- win10运行命令大全
- 全国省级地级县级行政区sql与json数据
- Microsoft store下载速度缓慢
- Ubuntu ADB 环境变量配置
- 【精益生产】108页PPT搞懂精益生产价值流分析图(VSM)
- php微信公众号报修系统,微信公众号如何实现在线报修系统?
- 福利 | 启迪之星2018首期AI创业加速营免费名额
- 程序中图片透明 函数
- Matplotlib画图之调整字体大小
热门文章
- 【Pytorch】rgb转lab颜色空间转换
- Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存
- 机器学习:Leaning without Forgetting -- 增量学习中的抑制遗忘
- 德国奇葩经历之护照丢失
- 详解通往Web3的护照:去中心化身份DID
- android 永久root权限,安卓 实现永久性开启adb 的root权限
- STL容器之数据结构图解
- java.sql.SQLSyntaxErrorException: Table ‘H_PERSION‘ doesn‘t exist
- # 技术栈知识点巩固——Js
- Python杀死Excel?众多模块哪家强