最近在学爬虫。发现最关键的就是定位 HTML 中的目标内容并将其抓取赋值给变量再进行分类存储。 我发现 XPath 、beautifulsoup 、正则表达式都可以完成 HTML 目标内容的定位和抓取(正则表达式主要是定位内容)。那么哪一个技术学习成本最低,兼容性最好(兼容性主要指在各种特殊 HTML 网页中都可以准确定位目标内容)。我目前初步学习,感觉正则表达式学习成本最高。希望听高手推荐一下。推荐的同时希望给出详细的推荐理由。多谢了!
1
wgit 2023-08-27 19:25:35 +08:00
不是应该先学 js 逆向吗
学完逆向应该就不会考虑现在这个问题了 |
2
Rang666 2023-08-27 19:41:25 +08:00 via iPhone
只是会用这几个玩意的水平的话一天不都能搞定了?
|
3
runningman 2023-08-27 21:08:45 +08:00
都可以学学,每个用的地方不同,解决的问题也不同。
|
4
daisyfloor 2023-08-27 21:21:56 +08:00
我主要是用 beautifulsoup ,正则也得会一些处理一些特殊情况。
|
5
joApioVVx4M4X6Rf 2023-08-27 22:02:51 +08:00
学 parsel 吧,到时候学 scrapy 就省得学解析库了
|
6
kice 2023-08-27 22:31:11 +08:00 via Android
按照标题来说的话,要问怎么选择 HTML 里面的元素?
学习成本最低的算是 CSS selector ,看上去你误以为是 beautiful soup 了(只能这样猜测)。 其次是正则表达式,最后再是 XPath 。 兼容性的话,最高应该是 XPath ,虽然绝大部分情况用 CSS selector 就能解决。 但是在特殊情况下,正则表达式是绝大部分语言 如果使用正则表达式需要自己处理 HTML 里面的 escape characters , |
7
kice 2023-08-27 22:34:07 +08:00 via Android
@kice 手机卡了,然后不知道为什么就提交了。。。
但是,正则表达式是绝大部分语言都能用,目前主流语言标准库都自带。其他两种方法都需要解析整个 HTML 文档,理论上还有性能问题。 如果使用正则表达式需要自己处理 HTML 里面的 escape characters ,不过处理也不难。 |
8
k2wang 2023-08-27 22:47:46 +08:00
xpath, 熟悉之后写起来又快又舒服
|
9
administrations 2023-08-28 09:45:28 +08:00
xpath 配合相应插件辅助提取目标 用着爽歪歪
|
10
fbichijing 2023-08-28 14:40:50 +08:00 1
权做抛砖引玉。
lxml -> xpath 选择器 beautifulsoup -> CSS 选择器 解析的话一般来说是这两种选择一种,解析规范的 html 大多数情况下多数使用这两种选择器而不是正则。一些特殊情况和字符串处理则使用正则。印象中 lxml 底层是使用 C ,而 beautifulsoup 是 python 实现,似乎是 lxml 效率更高一些。两者选择自己喜欢擅长的那种就可以了。 爬虫的难度如楼上所说,是如何获取到网页源码和参数构造,反而解析和入库是比较简单的步骤了。 |
11
huruwo 2023-08-28 15:18:29 +08:00
爬虫要学的是逆向风控指纹滑块
|
12
Maerd 2023-08-29 10:19:26 +08:00
xpath 和正则是都要学的,bs 可以不学
|
13
huzhikuizainali OP @huruwo 现在的云打码平台不能解决滑块对齐问题么?
|
14
huruwo 2023-08-29 11:35:07 +08:00
@huzhikuizainali 打码平台勉强可以针对特定类型,后面还有账号问题。风控限制问题,设备问题,ip 代理问题,签名算法问题,
|
15
Luzaiv7 2023-09-11 14:16:05 +08:00
@huzhikuizainali 做到最后还是要自己搞滑块的,而且逆向风控账号这些才是学起来最麻烦的,你把 xp 和正则简单学学能用就行了,现在大部分都是 json 的数据
|
16
huzhikuizainali OP @huruwo 有什么书籍推荐么?主要内容是针对反爬的。
|
17
huruwo 2023-09-14 10:40:18 +08:00
@huzhikuizainali 书本都是落后的,应对不了最新的对抗。js 基础打好就行,再就是进圈子找人学习最新的对抗方法。
|