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 · 244 天前 · 1379 次点击
    这是一个创建于 244 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    如果使用正则表达式需要自己处理 HTML 里面的 escape characters ,
    kice
        7
    kice  
       244 天前 via Android
    @kice 手机卡了,然后不知道为什么就提交了。。。

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

    如果使用正则表达式需要自己处理 HTML 里面的 escape characters ,不过处理也不难。
    k2wang
        8
    k2wang  
       244 天前
    xpath, 熟悉之后写起来又快又舒服
    administrations
        9
    administrations  
       243 天前
    xpath 配合相应插件辅助提取目标 用着爽歪歪
    fbichijing
        10
    fbichijing  
       243 天前   ❤️ 1
    权做抛砖引玉。
    lxml -> xpath 选择器
    beautifulsoup -> CSS 选择器
    解析的话一般来说是这两种选择一种,解析规范的 html 大多数情况下多数使用这两种选择器而不是正则。一些特殊情况和字符串处理则使用正则。印象中 lxml 底层是使用 C ,而 beautifulsoup 是 python 实现,似乎是 lxml 效率更高一些。两者选择自己喜欢擅长的那种就可以了。
    爬虫的难度如楼上所说,是如何获取到网页源码和参数构造,反而解析和入库是比较简单的步骤了。
    huruwo
        11
    huruwo  
       243 天前
    爬虫要学的是逆向风控指纹滑块
    Maerd
        12
    Maerd  
       242 天前
    xpath 和正则是都要学的,bs 可以不学
    huzhikuizainali
        13
    huzhikuizainali  
    OP
       242 天前
    @huruwo 现在的云打码平台不能解决滑块对齐问题么?
    huruwo
        14
    huruwo  
       242 天前
    @huzhikuizainali 打码平台勉强可以针对特定类型,后面还有账号问题。风控限制问题,设备问题,ip 代理问题,签名算法问题,
    Luzaiv7
        15
    Luzaiv7  
       229 天前
    @huzhikuizainali 做到最后还是要自己搞滑块的,而且逆向风控账号这些才是学起来最麻烦的,你把 xp 和正则简单学学能用就行了,现在大部分都是 json 的数据
    huzhikuizainali
        16
    huzhikuizainali  
    OP
       227 天前
    @huruwo 有什么书籍推荐么?主要内容是针对反爬的。
    huruwo
        17
    huruwo  
       226 天前
    @huzhikuizainali 书本都是落后的,应对不了最新的对抗。js 基础打好就行,再就是进圈子找人学习最新的对抗方法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   945 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:34 · PVG 03:34 · LAX 12:34 · JFK 15:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.