文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

学习爬虫必须学的基础知识

2023-06-02 00:16

关注

数据的来源
1)用户自行产生
2)去第三方的公司购买数据
3)去免费的数据网站下载数据
4)人工收集数据
5)爬虫获取
2.什么是爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做
3.爬虫的分类
根据被爬网站的数量的不同,我们把爬虫分为:
通用爬虫 :通常指搜索引擎的爬虫(https://www.baidu.com)
聚焦爬虫 :针对特定网站的爬虫
4 . 爬虫的流程1. url
2. 发送请求获取响应
3. 对响应进行提取
a. 如果提取的是url,就重复步骤2
b. 如果提取的是数据,就保存入库
5. 大象装冰箱分几步

外汇分析师http://www.gendan5.com/experts.html

爬虫爬取数据的流程和将大象装进冰箱的流程相似:
class 冰箱
属性:门 =
东西s = [大象,]
def open门
class 大象
1.冰箱门打开

冰箱a = 冰箱()
冰箱a.open门()
2.大象放进冰箱
具体再去完善冰箱的大小以及大象放进去的方法
3.冰箱们关上
冰箱a.close门()
6.robots协议
Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是互联网中的一般约定,可以忽略,例如:(https://www.taobao.com/robots.txt)
7.http,和https的概念
复习的必要性:在发送请求,获取响应的过程中 就是发送http或https的请求,获取http或https的响应
HTTP:
超文本传输协议,默认端口号:80
HTTPS:
HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议,默认端口号:443
HTTPS比HTTP更安全,但是性能更低
8.浏览器的工作原理http请求的过程
1)浏览器先向地址栏中的url发起请求,并获取相应
2)在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
3)浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
4)从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
注意:
但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等),浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取
理解浏览器的工作原理之后,要知道一下俩点:
1)多次响应的结果 就意味着 有多次请求(浏览器最终显示的结果是由多次请求对应的多次响应共同渲染的结果)
2)爬虫是以发送一次请求对应的响应为准,来提取数据2.爬虫是以发送一次请求对应的响应为准,来提取数据
9. 爬虫关注的常见请求头
User-Agent 用户代理
Referer 面包屑
Cookie
http常见请求头:
Host (主机和端口号)
Connection (链接类型)
Upgrade-Insecure-Requests (升级为HTTPS请求)
User-Agent (浏览器名称)
Accept (传输文件类型)
Referer (页面跳转处)
Accept-Encoding(文件编解码格式)
Cookie (Cookie)
x-requested-with :XMLHttpRequest (表示该请求是Ajax异步请求)
10. 爬虫关注的响应头
Set-Cookie 后端一次向客户端set一条cookie
在响应中 可以set多次cookie;客户端最多保存20条cookie
11.响应状态码
200:成功
302:临时转移至新的url
307:临时转移至新的url
404:找不到该页面
500:服务器内部错误
503:服务不可用,一般是被反爬
12.字符串相关的复习
python3中两种字符串类型:
str : unicode的呈现形式
bytes :字节类型,互联网上数据的都是以二进制的方式(字节类型)传输的
关于bytes的拓展阅读:https://segmentfault.com/a/1190000004450876
UTF-8是Unicode的实现方式之一
str和bytes类型的互相转换:
string --> bytes
encode()
bytestring -->str
decode(‘utf8’) # ascii gbk gb2312 iso-8859-1
编码方式解码方式必须一样,否则就会出现乱码
‘你好吗’.encode()–> b’你好吗’
b’你好吗’.decode(‘ascii’) --> 乱码!
b’你好吗’.decode(‘utf8’) --> 正常显示

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯