【问题标题】:How to use lxml to get a message from a website?如何使用 lxml 从网站获取消息?
【发布时间】:2009-10-30 07:47:16
【问题描述】:

exam.com 与天气无关:

Tokyo: 25°C

我想使用 Django 1.1lxml 在网站上获取信息。我只想获取“25”的信息。

HTMLexam.com 结构如下:

<p id="resultWeather">
    <b>Weather</b>
    Tokyo:
    <b>25</b>°C
</p>

我是学生。我正在和我的朋友们做一个小项目。请解释给我容易理解。非常感谢!

【问题讨论】:

    标签: django lxml


    【解决方案1】:

    BeautifulSoup 比 lxml 更适合 html 解析。

    这样的事情可能会有所帮助:

    def get_weather():
        import urllib
        from BeautifulSoup import BeautifulSoup
        data = urllib.urlopen('http://exam.com/').read()
        soup = BeautifulSoup(data)
        return soup.find('p', {'id': 'resultWeather'}).findAll('b')[-1].string
    

    用urllib获取页面内容,用BeautifulSoup解析,找到id=resultWeather的P,在我们的P中找到最后一个B并获取它的内容

    【讨论】:

    • 谢谢。我已经知道该怎么做了。但是,仍然是一个问题。我想获得第二个“b”,而不是最后一个。这样做的参数?
    • 嗯?我不知道它是如何工作的,但从最后一行很明显,您应该提供不同的列表索引。
    • 尝试使用.findAll('b')[1] 而不是.findAll('b')[-1]
    • 您也可以查看 pyquery。它具有类似 jquery 的语法,并建立在 lxml 之上,因此比 BeautifulSoup 快得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    相关资源
    最近更新 更多