? 简介:大家好,我是zy阿二,我是一名对知识充满渴望的自由职业者。
?? 最近我沉溺于Python的学习中。你所看到的是我的学习笔记。
?? 如果对你有帮助,请关注、点赞,让我们共同进步。有不足之处请留言指正!
Python爬虫最常用到的库:
1?? 络请求库、学习线路一:
这些库你可以理解为是一个媒介,比如和朋友聊天我们需要借助: 发短信、发QQ,发微信 等方式。和 站建立链接,我们也需要一个媒介。
-
urllib、urllib2:官方库。在Python2中操作URL功能的元老级库,在Python3中合并成了urllib。(知道即可,不深入)
-
urllib3:第三方库。鉴于urllib和requests已经无法满足需求,所以出现了功能更强大的urllib3模块,可以通过建立连接池实现多个URL请求并发。(相当于你微信同时和多个朋友聊天)很多框架都已经开始该用这个库了。所以学习这个模块对将来学习爬虫框架很有帮助。虽然都叫urllib但是和之前的2个urllib没啥关系。
-
selenium、playwright:自动化测试工具。直接调用浏览器访问目标 站的库,比如, 站请求数据加密,解密难度较大的 站。或 需要各种人工验证的 站。简介:selenium是在业内知名度非常高的一个工具,历史悠久。而playwright是新贵,是贵族,出身微软,支持异步,支持移动端浏览器,并且环境安装简洁方便,不需要额外的WebDriver。
-
aiohttp:在Python3.6官方大力引入推广异步协程库。基于 asyncio 借助于 async/await 关键字,实现异步的 络请求,可以极大的提高单个线程的效率,即:高并发。
2?? 数据解析库(选择器)学习线路二:
为了从一堆数据中提取有用信息。比如你想知道你朋友现在在干嘛, 然后你那话痨好友回答到:昨天晚上我出去浪到了凌晨2点才回家,结果老婆把门给我锁了,闹了半天弄到3点半才给我开门,所以早上我上班都迟到了,还被老板一顿骂,中午吃饭的时候还把汤打翻了,洒了一裤子。然后就提前请假回家了。刚刚洗好澡,这会儿躺床上呢,准备补个觉。估计今天我还逃不掉一顿臭骂,真是糟糕的一天啊!
是不是觉得一堆废话错!目标服务器返回给你的数据也是包含了一大堆对你来说没用的数据,所以在一堆废话中提取你需要的信息。尤其重要,这就是数据解析的作用。
-
xpath:一门在xml文档中查找信息的语言,通过路径、标签、元素属性、等方式选取节点定位数据。对是树状结构的数据发挥巨大作用和便利。常用库:1.,2.例如:你的QQ安装在C: Microsoft Windows Programs 腾讯软件 QQ.exe这个路径就是一个树状结构,需要一层层的打开文件夹才能找到最终的QQ.exe 第二篇讲
-
CSS:类似xpath,同样是定位树状结构。只是CSS选择器在性能更优,效率更高,语法更简洁。但是功能没有xpath强大。使用的库也和xpath相同:1.,2. 第三篇讲
-
re: 正则表达式。正则不只是一个选择器,他的功能强大,涉及领域广,几乎所有处理文字的操作都可以用正则来实现。文档数据筛选,提取 页数据都是得心应手。但是他的表达式较多,语法严谨。并且过几天去回顾代码时,想要修改的时候,会遇到难读,不易理解,不敢修改的囧况。常用库: 想学的可以看我写的RE入门
-
混合使用xpath,CSS,re,做数据的筛选。 第四篇讲
requests基础用法
requests是第三方模块,需要 安装
方法 | 作用 |
---|---|
requests.get() | 所有可以直接访问的地址,都可以使用get方法。 |
requests.post() | 在需要携带必要参数才能访问的页面需要使用。 |
requests.session() | 需要先登录才能访问的 页时,需要用到。 |
1?? 发送请求,返回response
一个简单的实战案例, 访问微信页面。获取页面信息。
html中的内容
2?? 使用bs4解析数据。
第一步:先确定需要的内容的位置
bs4解析方法:find()
首先获取对应的版本, 确定内容在 a 标签 class=banner__update-content 下。然后开始写代码
结果:
bs4更多命令总结:
: 返回所有源文档中的text内容。
使用 find() 和 find_all() 没有找到对应节点的时候,分别返回 None 和 []
: 返回所有 a 标签并且含有属性href 的节点
: 相邻兄弟,同层节点,可选择紧接在a 标签后的span标签,且两者在同一个父标签下。
: 非相邻兄弟,同层节点,选择 a标签之后出现的所有span , 两者标签必须在同一个父标签下。但是 span不必紧接着 a。
:返回div下的子节点, a 标签的所有节点
请求头:
在发送 络请求的时候,加上 user-agent 这个参数非常有必要。如下:
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树 络爬虫Beautiful Soup211863 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!