我正在试图弄清楚如何登录安全网站以解析用户特定数据,我无法找到如何执行此操作的具体示例。我想用PHP编写它,但许多搜索并没有真正发现任何语言。我对Python很熟悉,感觉可能在这种情况下更有用。似乎很多网站都有特定于该网站登录的API。但是搜索和使用特定的API似乎更适合我能够编写的东西,然后适应。
例如:如何以编程方式登录stackoverflow,然后解析我的个人资料以获取我已登录的连续天数。
使用Simple_HTML_DOM
我写过这个我以前用来解析非安全的html
<?php
include_once('simple_html_dom.php');
$html = file_get_html("http://stackoverflow.com/users/779920/nick");
foreach($html->find('[class=days-visited]') as $e)
echo $e->outertext . '<br>';
?>
但在这种情况下它不起作用。我不确定这是否在正确的轨道上,但我已经尝试使用firebug for Chrome对POST数据进行了熟化,但是现在这个工具对我来说相当复杂,而且我不确定如何正确地解读数据。给定。
任何帮助都将不胜感激。
答案 0 :(得分:2)
我认为这取决于该页面用于身份验证的确切系统,但这里是我最近用于完全相同的一个片段。就我而言,我只是想下载页面:
# An example website
domain = 'http://secure.website.com'
url = domain + '/web/page.html'
# Create a new authentication handler
auth_handler = urllib.request.HTTPBasicAuthHandler()
# Set the login username and password
auth_handler.add_password(None, domain, user='username', passwd='password')
# Create and install a new opener for the handler
opener = urllib.request.build_opener(auth_handler)
urllib.request.install_opener(opener)
# Connect to the page
conn = urllib.request.urlopen(url)
# Read all data on the webpage
page = conn.readall().decode()
# close the connection
conn.close()
我引用你的urllib文档(对于python3。在python2中它是urllib2)。它有相当好的文档记录,虽然我花了一些试验和错误来确定我需要的确切步骤。请注意,身份验证处理程序只需要处理 你登录的root(在这种情况下是http://secure.website.com)。一旦安装了处理程序,它将识别属于该域的任何页面并使用给定的身份验证信息。还要记住,这并不是那么安全 - 任何有权访问代码的人都可以看到您的登录详细信息。
如果您随后想要解析网页,可以使用html.parser(或python2版本,HTMLParser)或功能更强大的BeautifulSoup。