Python爬虫之选择器篇一,容易被忽视的强大的选择器 BeautifulSoup 。它支持CSS、re 的综合筛选。讲的超细!图文并茂!缺点速度较慢。

? 简介:大家好,我是zy阿二,我是一名对知识充满渴望的自由职业者。
?? 最近我沉溺于Python的学习中。你所看到的是我的学习笔记。
?? 如果对你有帮助,请关注、点赞,让我们共同进步。有不足之处请留言指正!

Python爬虫最常用到的库:

1?? 络请求库、学习线路一:

这些库你可以理解为是一个媒介,比如和朋友聊天我们需要借助: 发短信、发QQ,发微信 等方式。和 站建立链接,我们也需要一个媒介。

  1. urllib、urllib2:官方库。在Python2中操作URL功能的元老级库,在Python3中合并成了urllib。(知道即可,不深入)

  2. urllib3:第三方库。鉴于urllib和requests已经无法满足需求,所以出现了功能更强大的urllib3模块,可以通过建立连接池实现多个URL请求并发。(相当于你微信同时和多个朋友聊天)很多框架都已经开始该用这个库了。所以学习这个模块对将来学习爬虫框架很有帮助。虽然都叫urllib但是和之前的2个urllib没啥关系。

  3. selenium、playwright:自动化测试工具。直接调用浏览器访问目标 站的库,比如, 站请求数据加密,解密难度较大的 站。或 需要各种人工验证的 站。简介:selenium是在业内知名度非常高的一个工具,历史悠久。而playwright是新贵,是贵族,出身微软,支持异步,支持移动端浏览器,并且环境安装简洁方便,不需要额外的WebDriver。

  4. aiohttp:在Python3.6官方大力引入推广异步协程库。基于 asyncio 借助于 async/await 关键字,实现异步的 络请求,可以极大的提高单个线程的效率,即:高并发。

2?? 数据解析库(选择器)学习线路二:

为了从一堆数据中提取有用信息。比如你想知道你朋友现在在干嘛, 然后你那话痨好友回答到:昨天晚上我出去浪到了凌晨2点才回家,结果老婆把门给我锁了,闹了半天弄到3点半才给我开门,所以早上我上班都迟到了,还被老板一顿骂,中午吃饭的时候还把汤打翻了,洒了一裤子。然后就提前请假回家了。刚刚洗好澡,这会儿躺床上呢,准备补个觉。估计今天我还逃不掉一顿臭骂,真是糟糕的一天啊!
是不是觉得一堆废话错!目标服务器返回给你的数据也是包含了一大堆对你来说没用的数据,所以在一堆废话中提取你需要的信息。尤其重要,这就是数据解析的作用。

  1. xpath:一门在xml文档中查找信息的语言,通过路径、标签、元素属性、等方式选取节点定位数据。对是树状结构的数据发挥巨大作用和便利。常用库:1.,2.例如:你的QQ安装在C: Microsoft Windows Programs 腾讯软件 QQ.exe这个路径就是一个树状结构,需要一层层的打开文件夹才能找到最终的QQ.exe 第二篇讲

  2. CSS:类似xpath,同样是定位树状结构。只是CSS选择器在性能更优,效率更高,语法更简洁。但是功能没有xpath强大。使用的库也和xpath相同:1.,2. 第三篇讲

  3. re: 正则表达式。正则不只是一个选择器,他的功能强大,涉及领域广,几乎所有处理文字的操作都可以用正则来实现。文档数据筛选,提取 页数据都是得心应手。但是他的表达式较多,语法严谨。并且过几天去回顾代码时,想要修改的时候,会遇到难读,不易理解,不敢修改的囧况。常用库: 想学的可以看我写的RE入门

  4. 混合使用xpathCSSre,做数据的筛选。 第四篇讲

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进行处理,非常感谢!

上一篇 2022年9月6日
下一篇 2022年9月6日

相关推荐