【问题标题】:How to Get a line of text from html to Python如何从html获取一行文本到Python
【发布时间】:2011-05-03 18:56:04
【问题描述】:

我正在创建一个打印出用户 IP 地址的程序。 所以我想要做的是获取 ipchicken.com 的 Html 并只打印出“名称地址”部分。 到目前为止,这是我的代码:

import urllib              
sock = urllib.urlopen("http://ipchicken.com")
htmlSource = sock.read()           
sock.close()
print htmlSource

现在如何打印出 html 的 ip 部分?

如果还有其他方法可以使用 python 获取用户的 ip,请也包括在内:)

【问题讨论】:

    标签: python html


    【解决方案1】:

    只需运行正则表达式即可查找htmlSource 上的 IP 结构模式

    ips = re.findall('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})',
                     htmlSource)
    

    变量ips 将包含所有具有IP 结构的文字。

    整个代码如下所示:

    import urllib,re           
    sock = urllib.urlopen("http://ipchicken.com")
    htmlSource = sock.read()           
    sock.close()
    print htmlSource
    ips = re.findall('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})', htmlSource)
    print "IPs in page", ips
    

    【讨论】:

    • 屏幕抓取...以及正则表达式也是如此。我真的不推荐它。
    • 谢谢!那是巨大的帮助!另外我学到了一些新东西xD。谢谢!
    • 用正则表达式解决这个问题似乎很简单。解析所有 XML 或使用 BeautifulSoup 等其他解决方案对我来说似乎有点矫枉过正,只是颜色问题......我猜 :)
    • 在我看来,切换到为您提供程序化输出而不是用于人类消费的东西是“正确的方式”。
    • 是的,我完全同意。但我不认为这是这里的问题。
    【解决方案2】:

    我建议您使用像ifconfig.me 这样更具程序性的东西,而不是使用大量广告的 ipchicken。 ifconfig.me 在被 cURL 之类的查询时表现不同。

    如果要解析 HTML 并使用 ipchicken 获取 IP 地址,请使用 BeautifulSoupElementTree

    update : http://ip.appspot.com/ 是只有 一个编程接口的东西。

    【讨论】:

    • 是的,我现在用那个链接代替了 ipchicken,谢谢!
    【解决方案3】:

    使用 HTML 抓取库,例如 BeautifulSoup

    【讨论】:

      【解决方案4】:

      您可以使用regular expression 在另一个文本中抓取文本。如果您提供htmlSource 的相关部分,我们可以发布一个。

      这里有一些关于检索 IP 地址的帖子:How to find out your IP address in Python

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 2015-06-30
      • 1970-01-01
      • 2016-03-24
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多