【问题标题】:Python Parsing user defined valuesPython解析用户定义的值
【发布时间】:2011-07-01 19:27:09
【问题描述】:

我试图改变:-

import urllib2 as urllib
... ...
file2 = urllib.urlopen(url2)
... ...
for line in file2:
    indexfrom2 = line.find('Mean Temperature')
    if indexfrom2 > -1:
        nxtLn = file2.next()
        nextLine = file2.next()
        indexfrom21 = nextLine.find('"nobr"')
        if indexfrom21 > -1:
            indexto21 = nextLine.find('</span>&nbsp;&deg;C</span>',indexfrom21)
        code2 = nextLine[indexfrom21+23:indexto21]
        print code2

让它看起来像:-

class (...)  
def ....  
Temperature = parse( file2, '<span>Mean Temperature</span></td>', '<b>' )  

但我不知道该怎么做。我要解析的上述代码集是针对不同值重复的,我想使用解析函数使其保持简短,以便它形成一个集合或循环,我不必一次又一次地重复所有代码。 [对于每个值(如平均温度、最高温度、湿度、压力等),代码在我的脚本上重复,看起来有点不专业]。

【问题讨论】:

  • 我个人会使用正则表达式来完成这项任务。
  • 你的“理想”版本中的'&lt;b&gt;'到底是什么。这在原始代码中没有……
  • 那  °C 和 是 html 代码上被索引的值,因为我正在获取这两个值之间的变量,该变量位于html 代码(用 find 搜索)。使用它,我使用解析提取了一些值。这是一个通用的方法。现在我需要使用以下方法使其看起来更专业:- Temperature = parse(file2, 'Mean Temperature', '' )
  • 原始代码不包含'&lt;b&gt;',因此很难确定什么映射到什么。如果您只是保持一致并插入原始代码引用的任何值,那会更容易。
  • @Chris:- 感谢更新,好吧,我是 python 新手,真的很新。我是新来的网络帮助,所以不知道我应该问什么,不问什么。但是您的反馈对 niw 有所帮助 :)。好的,网址是:-wunderground.com/history/airport/EGPH/2010/6/30/…

标签: python html parsing url


【解决方案1】:

您可能希望为此使用 BeautifulSoup。这是解析 HTML 的规范方法(即使在一些可怕的边缘情况下也能很好地工作)。如果您继续当前的方法,您将依赖于行号等内容,因此您的代码在文档结构发生微小变化时会变得非常脆弱。

http://www.crummy.com/software/BeautifulSoup/

【讨论】:

  • 是的,我看过了,但由于这是我的暑期项目,我实际上不能使用任何第三方应用程序或库。
  • 如果您真的要解析地下天气文件,为什么不以适合解析的格式获取数据?屏幕从第三方网站抓取 HTML 是非常糟糕的做法——不仅粗鲁,而且在网站更新时会中断。既然你在学习,就不要学着用错误的方式做事。
  • 该文件的逗号分隔版本的 url 在这里:wunderground.com/history/airport/EGPH/2010/6/30/…
  • 感谢您的建议。是否有可能我可以使用它来获得以下使用划定的版本?我想,我必须保留网址,因为我需要任何一天的平均单位,只有最低和最高温度。正如你在下面看到的那样:-
  • 平均温度 = 16 摄氏度... 最高温度 = 21 摄氏度... 最低温度 = 11 摄氏度... 湿度:... 露点 = 11 摄氏度... 湿度:... 平均湿度 = 71... 海平面压力:... 海平面压力 = 1016.40 pHb... 使用“...”,因为我不知道如何转到下一行添加评论 ...你有什么建议吗?因为只是我使用上述方法的代码,这给了我所有这些输出,使用正确的定义函数,如docs.python.org/tutorial/controlflow.html#defining-functions
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 2019-05-24
相关资源
最近更新 更多