学习爬虫, XPath、beautifulsoup、正则表达式推荐学哪一个? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
huzhikuizainali
V2EX    Python

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

  •  
  •   huzhikuizainali 2023-08-27 18:52:12 +08:00 2303 次点击
    这是一个创建于 774 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    如果使用正则表达式需要自己处理 HTML 里面的 escape characters ,不过处理也不难。
    k2wang
        8
    k2wang  
       2023-08-27 22:47:46 +08:00
    xpath, 熟悉之后写起来又快又舒服
    administrations
        9
    administrations  
       2023-08-28 09:45:28 +08:00
    xpath 配合相应插件辅助提取目标 用着爽歪歪
    fbichijing
        10
    fbichijing  
       2023-08-28 14:40:50 +08:00   1
    权做抛砖引玉。
    lxml -> xpath 选择器
    beautifulsoup -> CSS 选择器
    解析的话一般来说是这两种选择一种,解析规范的 html 大多数情况下多数使用这两种选择器而不是正则。一些特殊情况和字符串处理则使用正则。印象中 lxml 底层是使用 C ,而 beautifulsoup 是 python 实现,似乎是 lxml 效率更高一些。两者选择自己喜欢擅长的那种就可以了。
    爬虫的难度如楼上所说,是如何获取到网页源码和参数构造,反而解析和入库是比较简单的步骤了。
    huruwo
        11
    huruwo  
       2023-08-28 15:18:29 +08:00
    爬虫要学的是逆向风控指纹滑块
    Maerd
        12
    Maerd  
       2023-08-29 10:19:26 +08:00
    xpath 和正则是都要学的,bs 可以不学
    huzhikuizainali
        13
    huzhikuizainali  
    OP
       2023-08-29 11:00:15 +08:00
    @huruwo 现在的云打码平台不能解决滑块对齐问题么?
    huruwo
        14
    huruwo  
       2023-08-29 11:35:07 +08:00
    @huzhikuizainali 打码平台勉强可以针对特定类型,后面还有账号问题。风控限制问题,设备问题,ip 代理问题,签名算法问题,
    Luzaiv7
        15
    Luzaiv7  
       2023-09-11 14:16:05 +08:00
    @huzhikuizainali 做到最后还是要自己搞滑块的,而且逆向风控账号这些才是学起来最麻烦的,你把 xp 和正则简单学学能用就行了,现在大部分都是 json 的数据
    huzhikuizainali
        16
    huzhikuizainali  
    OP
       2023-09-13 21:45:16 +08:00
    @huruwo 有什么书籍推荐么?主要内容是针对反爬的。
    huruwo
        17
    huruwo  
       2023-09-14 10:40:18 +08:00
    @huzhikuizainali 书本都是落后的,应对不了最新的对抗。js 基础打好就行,再就是进圈子找人学习最新的对抗方法。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3545 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 10:27 PVG 18:27 LAX 03:27 JFK 06:27
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86