【问题标题】:Using Python - Get a table out of some html and display it?使用 Python - 从一些 html 中获取表格并显示它?
【发布时间】:2014-05-12 09:59:52
【问题描述】:

这里有很多帮助,但其中一些超出了我的想象,所以希望通过提出我的问题并获得量身定制的答案,我会更好地理解。

到目前为止,我已成功连接到网站,以用户身份进行身份验证,填写表格,然后下拉 html。 html 包含我想要的表格。我只想说这样的话:-

读取 html... 当您读取表格开始标签时,请继续阅读表格结束标签,然后将其显示,或者将其写入新的 html 文件并打开它并保留标签,以便为我格式化。

这是我目前的代码。

# Use 'with' to ensure the session context is closed after use.
with requests.Session() as s:
s.post(LOGINURL, data=login)
# print
r = s.get(LOGINURL)
print r.url

# An authorised request.
r = s.get(APURL)
print r.url
    # etc...

s.post(APURL)
#
r = s.post(APURL, data=findaps)
r = s.get(APURL)
#print r.text




f = open("makethisfile.html", "w")

f.write('\n'.join(['<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
                   '<html>',
                   ' <head>',
                   ' <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">',
                   ' <title>THE TITLE</title>',
                   ' <link rel="stylesheet" href="css/displayEventLists.css" type="text/css">',
                   r.text #this just does everything, i need to get the table.
                   ])
        )

f.close()

【问题讨论】:

标签: python file io


【解决方案1】:

虽然最好正确解析文件,但快速而简单的方法使用正则表达式。

m = re.search("<table.*?>(.+)</table>", r.text, re.S)
if (m):
  print m.group()
else:
  print "Error: table not found"

作为为什么解析更好的一个例子,所写的正则表达式将失败并出现以下(相当做作!)示例:

<!-- <table> -->
blah
blah
<table>
this is the actual
table
</table>

正如所写,它将获得文件中的第一个表。但是你可以循环获得第二个等,(或者如果可能的话,使正则表达式特定于你想要的表)所以这不是问题。

【讨论】:

  • 第一次做得很完美,感谢您的帮助。有人介意向我解释为什么这不是最好的方法吗?我会遇到问题吗,比如说如果有超过 1 个表,那是问题吗?
  • 我明白了,很酷。谢谢你的帮助!!幸运的是,我的页面上只有一张桌子,没有 cmets 或任何东西,所以它工作得很好。爱 Python!
猜你喜欢
  • 2013-06-02
  • 2020-12-14
  • 1970-01-01
  • 2021-03-04
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多