爬虫——0数据获取

目录

原理

在这里插入图片描述

0 请求request>>根据我们提供的网址,向服务器发起请求,然后返回数据

request.get()方法

# 引入requests库
import requests
res = requests.get('URL')

requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。

requests的工作过程
res是一个对象,属于requests.models.Response类。好,既然已经知道res是一个Response对象了,我们也就可以去了解它的相应属性和方法了。

response对象的常用属性

response.status_code 检查请求是否成功

  • print(response.status_code)得到的值说明如下图,若为200,则说明请求正常。
    在这里插入图片描述
    response.content 把response对象转换为二进制数据(以二进制数据的形式返回,适用于图片、音频、视频的下载)

在这里插入图片描述

import requests 

res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png') 
# 打印变量res的响应状态码,以检查请求是否成功
print(res.status_code)

在这里插入图片描述
在这里插入图片描述

response.content

接着的属性是response.content,这里的content可以理解为内容物,它能把Response对象的内容以二进制数据的形式返回,适用于图片、音频、视频的下载,看个例子你就懂了。

# 引入requests库
import requests

# 发出请求,并把返回的结果放在变量res中
res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')
# 把Reponse对象的内容以二进制数据的形式返回
pic = res.content
# 新建了一个文件ppt.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。
# 图片内容需要以二进制wb读写。你在学习open()函数时接触过它。
photo = open('ppt.jpg','wb')
# 获取pic的二进制内容
photo.write(pic) 
# 关闭文件
photo.close()

在这里插入图片描述

response.text

这个属性可以把Response对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。

# 引用requests库
import requests

# 下载《三国演义》第一回,我们得到一个对象,它被命名为res
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')
# 把Response对象的内容以字符串的形式返回
novel=res.text
# 现在,可以打印小说了,但考虑到整章太长,只输出800字看看就好。在关于列表的知识那里,你学过[:800]的用法。
print(novel[:800])

通过读写文件把小说保存到本地,下面是完整做法

# 引入requests库
import requests
#下载《三国演义》第一回,我们得到一个对象,它被命名为res
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')
# 把Response对象的内容以字符串的形式返回
novel = res.text
# 创建一个名为《三国演义》的txt文档,指针放在文件末尾,追加内容
k = open('《三国演义》.txt','a+')
# 写进文件中 
k.write(novel)
# 关闭文档    
k.close()

response.encoding

response.encoding 可以决定爬取到的数据的编码方式,诸如:‘gbk’、‘utf-8’、‘unicode’或’ASCII’

用法:response.encoding=‘utf-8’

import requests
# 下载《三国演义》第一回,我们得到一个对象,它被命名为res
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')
# 定义Reponse对象的编码为utf-8。
res.encoding='utf-8'
# 把Response对象的内容以字符串的形式返回
novel=res.text
print(novel[:800])

在这里插入图片描述

到这里,requests.get()方法和Response对象常见的四个属性就讲完了

PS:如果网页的URL是https://www.taobao.com/markets/3c/tbdc?spm=a21bo.2017.201867-main.11.5af911d9VV8EyS,那么网站的域名是www.taobao.com

域名中会藏着网站的国籍或功能领域等信息,那么.cn,.com,.gov结尾的域名分别代表了什么?

爬虫协议(robots协议)

分为三部分:
user-agent
allow
disallow

下面截取了一段淘宝的robots协议( http://www.taobao.com/robots.txt):
User-agent: Baiduspider # 百度爬虫
Allow: /article # 允许访问 article
Allow: /oshtml # 允许访问 oshtml
Allow: /ershou # 允许访问 ershou
Allow: /$ # 允许访问根目录,即淘宝主页
Disallow: /product/ # 禁止访问product文件夹下面的所有文件,但是product文件夹本身允许被访问
Disallow: / # 禁止访问除 Allow 规定页面之外的其他所有页面

User-agent表示的是爬虫类型,上面的示例代码注释了“百度爬虫”和“谷歌爬虫”,我们自己写的爬虫一般要看User-Agent: *,*指向所有未被明确提及的爬虫。

Allow代表允许被访问,Disallow代表禁止被访问。字段对应的值都含有路径分隔符/,限制了哪些或哪一层目录的内容是允许或者禁止被访问的。

比如淘宝禁止其他爬虫访问所有页面,也就是说,我们自己写的爬虫不被欢迎爬取www.taobao.com域名下的任何网页。

有趣的是,淘宝限制了百度对产品页面的爬虫,却允许谷歌访问。

所以,当你在百度搜索“淘宝网”时,会看到下图的这两行小字。

在这里插入图片描述

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值