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
saximi
V2EX  ›  Python

请教关于 lxml 的用法

  •  
  •   saximi · 2017-09-27 20:20:48 +08:00 · 2686 次点击
    这是一个创建于 2612 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在爬虫中,用 Request()方法返回的 response 对象,请问要如何与 lxml 结合在一起使用呢?
    例如 response.xpath('//div[@class="A"]') 这个语句要改为用 reponse 和 lxml 表示该怎么写呢?
    谢谢
    9 条回复    2017-09-29 19:01:08 +08:00
    TimePPT
        1
    TimePPT  
       2017-09-27 21:16:27 +08:00
    billion
        2
    billion  
       2017-09-27 21:54:22 +08:00
    如果你非要字典有 Scrapy 的情况下还手动用 lxml 的话,

    ```python
    from lxml.html import fromstring
    selector = fromstring(response.body.decode())
    selector.xpath('//div[@class="A"]')
    ```
    saximi
        3
    saximi  
    OP
       2017-09-27 23:57:46 +08:00
    @billion 我初学爬虫,想用一些最主流的模式和包来实现功能。我知道 Scrapy 是最好用的架构,所以肯定要用的,另外据说 lxml 是 Python 语言里和 XML 以及 HTML 工作的功能最丰富和最容易使用的库。所以我才产生了如何在 Scrapy 下使用 lxml 的念头,当然这在各位前辈看来却可能是很不合理的搭配。
    按照您的意思,是不是既然使用了 Scrapy 架构,就用 xpath 来解析 XML 和 HTML 即可,不要再使用 lxml 了?
    谢谢指点!
    zhusimaji
        4
    zhusimaji  
       2017-09-28 08:52:50 +08:00
    还有一个强大的库 bs4
    mentalkiller
        5
    mentalkiller  
       2017-09-28 11:17:12 +08:00
    saximi
        6
    saximi  
    OP
       2017-09-28 20:14:33 +08:00
    @mentalkiller
    @zhusimaji 谢谢指点,我也有了解过 BS4,看了某些材料说除了正则,效率最快的是 lxml,BS4 虽然很友好但是效率相对较低,是这样么?
    yucongo
        7
    yucongo  
       2017-09-29 00:06:10 +08:00
    趁早改投 pyquery 门下吧……
    zhusimaji
        8
    zhusimaji  
       2017-09-29 08:56:25 +08:00
    @saximi 怎么会效率低,你可以使用不同解析器去解析 html,比如你提到的 lxml 都是可以使用的,所以效率问题不大
    billion
        9
    billion  
       2017-09-29 19:01:08 +08:00
    @saximi Scrapy 本身就自动会使用 lxml,这是它的一个依赖包。Scrapy 本来已经自动使用 lxml 帮你处理好了,你直接写 XPath 就好了,可你偏要自己再用 lxml 处理一遍。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5152 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:47 · PVG 13:47 · LAX 21:47 · JFK 00:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.