HTML解析库 —— Request HTML 初体验 title: HTML解析库 —— Request HTML 初体验 date: 2018-09-02 21:47:12 tag: Python Request HTML 当我们做HTML解析的时候。我们通常用的是 BeautifulSoup 或者是 PyQuery。前一阵子request这个库的作者又写了一个html解析库。Github仓库上的描述写到:HTML Parsing for Humans。那么想必这个框架一定很人性化。本着试一试的态度,我尝试了一下用这个库去爬取 Gank.io 闲读 网页,的确非常好用。 优点 我们知道如果使用beautifulsoup去爬取网页的话,它会安装一个依赖库。这个依赖库是为了做HTML解析的。而这次我们要介绍的,是不需要这个依赖库。其次,它内部又与request的这个库很好的结合在了一起。使得解析一个网页非常的方便快捷。 安装 注意:requests-html只支持Python 3.6及以上的版本 步骤 这里我们想要爬取闲读上面每一个新闻的标题。
我们先使用谷歌浏览器的开发者工具,检查一下标题所在的DOM位置。
这里得出实在下的里,通过一个标签包围着的标题。 确定好位置之后,我们进入代码实现的部分。 实现 之前我们可以通过request的这个库的get方法来获得网页上的正文。而这里我们将使用request-html的 会话来获得网页正文。 这里的变量存储了整个网页上的信息。 CSS 选择器选择素 我们使用CSS选择器来选择素。这里调用了方法。它会返回网页上所有匹配的素。当然它还提供了一个first参数。如果将它设为的话。将直接返回第一个找到的素。最后我们使用素节点的,将它遍历出来。 结果如图:
这里我们的爬取工作就结束了,可以看到这个库真的是非常的方便。 其他知识点 1. 解析文本 如果你不想使用request爬取的内容的话,你可以直接将字符串赋给类,它也可以进行解析。 2. 调用 JS 有些网页是需要 JS 进行渲染的,这时候request-html也提供了一个方法,获得渲染之后的网页。它会自动下载 ,然后用浏览器去加载这个网页,将加载好的网页进行解析。这个工作有点类似 。比较遗憾的是它没有提供 Chrome Driver 的自定义路径,以国内的网速来看,下载得费一番功夫。 有些网站上的内容会异步加载,这时候会需要来处理: 3. 模式匹配 提供了类似正则匹配的功能,非常快捷 4. Element 对象 返回的是 Element 对象,这个对象可以继续使用 等方法递归调用下去。同时,它还包括以下属性: | 属性 | 含义 | | — | — | | text | 文本内容 | | attr | 属性 | | html | HTML 内容 | | links | 链接 | 5. 修改 header 某些时候我们需要修改header,这时候我们只要在get请求里面添加即可。实际上这一部分逻辑应该是沿用了request的逻辑。 参考资料 Requests-HTML: HTML Parsing for Humans (writing Python 3)! 欢迎大家一起讨论问题:https://fanhang.me
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/44025.html