我正在制作一个 Python 程序来显示我有一个帐户的网站的风速,这样我就不必手动登录和检查风。
到目前为止,这是一些代码
br = mechanize.Browser()
br.set_handle_robots(False)
response = br.open("http://example.com/login")
br.select_form('save_key') #form name
br.form['login']='myusername'
br.form['password']='mypassword'
response=br.submit()
response = br.retrieve("http://example.com/wind")[0] #get the html code
这工作正常,但问题是从只有成员可以使用该代码访问的站点上获取数据。我可以保存 html 文件,但我不知道如何对代码进行排序以获取数据(这不是最好的 html),而且我认为每次保存 html 文件并对其进行排序都非常有效有人知道吗?我怎么能刮掉数据并仍然保持登录状态?如果您尝试不登录,您只会获得登录页面 html。
html的一个例子(可怕的代码):
<TR><TD colspan='8' align='center' bgcolor='#55840A'><font color='#FFFFFF'>D A Y S R E C O R D S</font></TD></TR><TR align='left'><TD><font color='#FFFFFF'>Wind Gust:</font></TD><TD><fontclass='numbers'>24</font> <font class='units'>km/h</font></TD><TD><font color='#FFFFFF'>Min Temperature:</font></TD><TD><font class='numbers'>8.8</font> <font class='units'>°C</font></TD><TD><fontcolor='#FFFFFF'>Max Temperature:</font></TD><TD><font class='numbers'>19.3</font> <font class='units'>°C</font></TD><TD><font color='#FFFFFF'>High:</font></TD><TD><font class='numbers'>31</font></TD></TR><TR><TD colspan='2'></TD><TD><font color='#FFFFFF'>Min Humidity:</font></TD><TD><font class='numbers'>67</font> <font class='units'>%</font></TD><TD><font color='#FFFFFF'>Max Humidity:</font></TD><TD><font class='numbers'>96</font> <font class='units'>%</font></TD><TD colspan='2'></TD></TR></TABLE>
例如,最低温度为 8.8
<TD><font color='#FFFFFF'>Min Temperature:</font></TD><TD><font class='numbers'>8.8</font> <font class='units'>°C</font></TD>
这使得很难刮掉数据。
最佳答案
听起来您想对返回的 HTML 使用正则表达式来获取所需的值。我建议使用 Pythex测试正则表达式。
例如,尝试使用以下正则表达式:
Min Temperature:</font></TD><TD><font class='numbers'>(\d+.\d*)
在“您的正则表达式:”并在“您的测试字符串:”字段中包含完整的 html 响应,您将获得所需的值。
关于string - 使用python自动登录网站并抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31971927/