string - 使用python自动登录网站并抓取数据

标签 string python-2.7 ubuntu mechanize autologin

我正在制作一个 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&nbsp;&nbsp;&nbsp;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'>&deg;C</font></TD><TD><fontcolor='#FFFFFF'>Max Temperature:</font></TD><TD><font class='numbers'>19.3</font> <font class='units'>&deg;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'>&deg;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/

相关文章:

arrays - 为什么 C 字符串并不总是等同于字符数组?

image - 如何验证此 URL 重定向到图像?

Python:Turtle 不能调用函数两次

ruby - 尝试在 ubuntu 16.04 上进行 ruby​​-install

Android Studio 无法在 Elementary OS 中运行

Java从字符串中提取多个子字符串

c++ - 识别字符串中的字符

java - 更改 Java 中的最终字符串值

Python 2.7 : applying str to collections. 计数器和 collections.defaultdict

linux - 无法在 ubuntu 14.04.4 LTS 上安装 g++ (我已尝试过命令和软件中心)