V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Sep 27, 2017 · 3173 views
    This topic created in 3135 days ago, the information mentioned may be changed or developed.
    在爬虫中,用 Request()方法返回的 response 对象,请问要如何与 lxml 结合在一起使用呢?
    例如 response.xpath('//div[@class="A"]') 这个语句要改为用 reponse 和 lxml 表示该怎么写呢?
    谢谢
    9 replies    2017-09-29 19:01:08 +08:00
    TimePPT
        1
    TimePPT  
    PRO
       Sep 27, 2017
    billion
        2
    billion  
       Sep 27, 2017
    如果你非要字典有 Scrapy 的情况下还手动用 lxml 的话,

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