文章目录

  • 初始爬虫
    • 爬虫的工作原理
      • 爬虫的三个步骤:
    • 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:在 wa 模式下,如果你打开的文件不存在,那么 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.textres.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)

浅学 ------ 爬虫(一)相关推荐

  1. (7) 浅学 “爬虫” 过程 (概念+练习)

    爬虫:请求网站并提取数据的自动化程序. 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程. 目录 爬虫的分类 Robots协议 常用请求头/响应头.http/s.加密方式 urllib ...

  2. python爬虫笔记——Scrapy框架(浅学)

    一.创建Scrapy爬虫项目 步骤: 安装scrapy:在pycharm项目(自己新建的爬虫项目)的终端输入 pip install scrapy 创建爬虫项目:同样在终端输入 scrapy star ...

  3. 一起学爬虫(Python) — 16 梅开二度,猫眼票房!

    一起学爬虫(Python) - 19 年轻人,进来学自动化 前言 咳咳,本来今天是没想更新的,因为我发现如果不更新涨粉速度比日更要快的多,是的你没听错,经过一天两天的咕咕咕,阅读量是蹭蹭蹭的上去了. ...

  4. 老司机带你学爬虫——Python爬虫技术分享

    什么是"爬虫"? 简单来说,写一个从web上获取需要数据并按规定格式存储的程序就叫爬虫: 爬虫理论上步骤很简单,第一步获取html源码,第二步分析html并拿到数据.但实际操作,老 ...

  5. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章

    原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...

  6. 这年头学爬虫还就得会点 scrapy 框架

    Hello,我是 Alex 007,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了. 这几天一直在练车,只能在中间休息的时候写一写博客,可怜去年报的名到 ...

  7. [大数据之Yarn]——资源调度浅学

    在hadoop生态越来越完善的背景下,集群多用户租用的场景变得越来越普遍,多用户任务下的资源调度就显得十分关键了.比如,一个公司拥有一个几十个节点的hadoop集群,a项目组要进行一个计算任务,b项目 ...

  8. 浅学JavaScript

    JavaScript是互联网上最流行的脚本语言,可广泛用于服务器.PC.笔记本电脑智能手机等设备: 对事件的反应: <!DOCTYPE html> <html> <hea ...

  9. java学习_Python基础学习教程:从0学爬虫?让爬虫满足你的好奇心

    Python基础学习教程:从0学爬虫?让爬虫满足你的好奇心 有必要学爬虫吗? 我想,这已经是一个不需要讨论的问题了. 爬虫,"有用"也"有趣"! 这个数据为王的 ...

最新文章

  1. 关于学习Python的一点学习总结(21->并行迭代)
  2. Centos6.x终端中文乱码
  3. 《Go语言圣经》学习笔记 第二章 程序结构
  4. git常用配置(指令)
  5. 在Python中有效使用JSON的4个技巧
  6. mysql aes encrypt_mysql加密函数aes_encrypt()和aes_decrypt()使用教程
  7. Javaweb之session创建销毁问题
  8. mysql如何选择多个表_从两个表mysql中选择多行
  9. Zabbix 监控LVS连接的状态
  10. CMD-CMD命令之新建一个用户!
  11. Python新闻网站项目-3.Gerapy爬虫分布式部署
  12. win10运行命令大全
  13. 全国省级地级县级行政区sql与json数据
  14. Microsoft store下载速度缓慢
  15. Ubuntu ADB 环境变量配置
  16. 【精益生产】108页PPT搞懂精益生产价值流分析图(VSM)
  17. php微信公众号报修系统,微信公众号如何实现在线报修系统?
  18. 福利 | 启迪之星2018首期AI创业加速营免费名额
  19. 程序中图片透明 函数
  20. Matplotlib画图之调整字体大小

热门文章

  1. 【Pytorch】rgb转lab颜色空间转换
  2. Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存
  3. 机器学习:Leaning without Forgetting -- 增量学习中的抑制遗忘
  4. 德国奇葩经历之护照丢失
  5. 详解通往Web3的护照:去中心化身份DID
  6. android 永久root权限,安卓 实现永久性开启adb 的root权限
  7. STL容器之数据结构图解
  8. java.sql.SQLSyntaxErrorException: Table ‘H_PERSION‘ doesn‘t exist
  9. # 技术栈知识点巩固——Js
  10. Python杀死Excel?众多模块哪家强