学习爬虫, XPath、beautifulsoup、正则表达式推荐学哪一个?

2023-08-27 18:52:12 +08:00
 huzhikuizainali

最近在学爬虫。发现最关键的就是定位 HTML 中的目标内容并将其抓取赋值给变量再进行分类存储。 我发现 XPath 、beautifulsoup 、正则表达式都可以完成 HTML 目标内容的定位和抓取(正则表达式主要是定位内容)。那么哪一个技术学习成本最低,兼容性最好(兼容性主要指在各种特殊 HTML 网页中都可以准确定位目标内容)。我目前初步学习,感觉正则表达式学习成本最高。希望听高手推荐一下。推荐的同时希望给出详细的推荐理由。多谢了!

1690 次点击
所在节点    Python
17 条回复
wgit
2023-08-27 19:25:35 +08:00
不是应该先学 js 逆向吗
学完逆向应该就不会考虑现在这个问题了
Rang666
2023-08-27 19:41:25 +08:00
只是会用这几个玩意的水平的话一天不都能搞定了?
runningman
2023-08-27 21:08:45 +08:00
都可以学学,每个用的地方不同,解决的问题也不同。
daisyfloor
2023-08-27 21:21:56 +08:00
我主要是用 beautifulsoup ,正则也得会一些处理一些特殊情况。
joApioVVx4M4X6Rf
2023-08-27 22:02:51 +08:00
学 parsel 吧,到时候学 scrapy 就省得学解析库了
kice
2023-08-27 22:31:11 +08:00
按照标题来说的话,要问怎么选择 HTML 里面的元素?

学习成本最低的算是 CSS selector ,看上去你误以为是 beautiful soup 了(只能这样猜测)。

其次是正则表达式,最后再是 XPath 。

兼容性的话,最高应该是 XPath ,虽然绝大部分情况用 CSS selector 就能解决。

但是在特殊情况下,正则表达式是绝大部分语言

如果使用正则表达式需要自己处理 HTML 里面的 escape characters ,
kice
2023-08-27 22:34:07 +08:00
@kice 手机卡了,然后不知道为什么就提交了。。。

但是,正则表达式是绝大部分语言都能用,目前主流语言标准库都自带。其他两种方法都需要解析整个 HTML 文档,理论上还有性能问题。

如果使用正则表达式需要自己处理 HTML 里面的 escape characters ,不过处理也不难。
k2wang
2023-08-27 22:47:46 +08:00
xpath, 熟悉之后写起来又快又舒服
administrations
2023-08-28 09:45:28 +08:00
xpath 配合相应插件辅助提取目标 用着爽歪歪
fbichijing
2023-08-28 14:40:50 +08:00
权做抛砖引玉。
lxml -> xpath 选择器
beautifulsoup -> CSS 选择器
解析的话一般来说是这两种选择一种,解析规范的 html 大多数情况下多数使用这两种选择器而不是正则。一些特殊情况和字符串处理则使用正则。印象中 lxml 底层是使用 C ,而 beautifulsoup 是 python 实现,似乎是 lxml 效率更高一些。两者选择自己喜欢擅长的那种就可以了。
爬虫的难度如楼上所说,是如何获取到网页源码和参数构造,反而解析和入库是比较简单的步骤了。
huruwo
2023-08-28 15:18:29 +08:00
爬虫要学的是逆向风控指纹滑块
Maerd
2023-08-29 10:19:26 +08:00
xpath 和正则是都要学的,bs 可以不学
huzhikuizainali
2023-08-29 11:00:15 +08:00
@huruwo 现在的云打码平台不能解决滑块对齐问题么?
huruwo
2023-08-29 11:35:07 +08:00
@huzhikuizainali 打码平台勉强可以针对特定类型,后面还有账号问题。风控限制问题,设备问题,ip 代理问题,签名算法问题,
Luzaiv7
2023-09-11 14:16:05 +08:00
@huzhikuizainali 做到最后还是要自己搞滑块的,而且逆向风控账号这些才是学起来最麻烦的,你把 xp 和正则简单学学能用就行了,现在大部分都是 json 的数据
huzhikuizainali
2023-09-13 21:45:16 +08:00
@huruwo 有什么书籍推荐么?主要内容是针对反爬的。
huruwo
2023-09-14 10:40:18 +08:00
@huzhikuizainali 书本都是落后的,应对不了最新的对抗。js 基础打好就行,再就是进圈子找人学习最新的对抗方法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/968679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX