2010-12-11 124 views
7

我见过这个其他问题:How to use Python to login to a webpage and retrieve cookies for later usage?如何使用python登录网站?

但是,直接修改该答案并不适用于我,所以我想知道如何才能实现我的目标。

为了让背景下,我试图登录到https://mog.com/hp/sign_in,然后从以下页面提取我的播放列表的名称:http://mog.com/my_mog/playlists

我认为这应该是有人谁知道他们在做什么,很简单。登录网站并访问受密码保护的页面的一些基本代码会很好,如果你能用一两句话来解释代码中的每一行代码在做什么,那将会更好,因此我可以更好地理解代码在做什么。

+0

你改变了什么?你怎么知道它不适合你? – 2010-12-11 01:32:13

+0

我更改了网站和登录信息。我知道这是行不通的,因为我打印出了页面上的链接,而且链接不一样。它从注册页面打印出链接。 – jonderry 2010-12-11 01:41:09

+0

也许我没有正确修改这一行:'login_data = urllib.urlencode({'username':username,'j_password':password})''但我不知道如何弄清楚需要做什么替换。 – jonderry 2010-12-11 01:46:25

回答

12

尝试用mechanize

import mechanize 
br=mechanize.Browser() 
br.open('https://mog.com/hp/sign_in') 
br.select_form(nr=0) 
br['user[login]']= your_login 
br['user[password]']= your_password 
br.submit() 
br.retrieve('http://mog.com/my_mog/playlists','playlist.html') 

编辑:
让你的链接,你可以补充一点:

for link in br.links(): 
    print link.url, link.text 

,或者从playlist.html开始,你可以使用Beautifulsoup和正则表达式:

from BeautifulSoup import BeautifulSoup 
import re 
soup = BeautifulSoup(file('playlist.html').read()) 
for link in soup.findAll('a', attrs={'href': re.compile("your matching re")}): 
    print link.get('href') 
+1

我得到这个工作,并将HTML拉到文件,如书面。如果我想检索一些与mog.com/my_mog/playlists中的模式相匹配的链接,那么该命令是什么?我无法找到清晰,易于搜索的机械化文档。 – jonderry 2010-12-11 02:54:15

+3

@jonderry我不认为有一个命令,你可能想使用正则表达式匹配模式 – Asterisk 2010-12-11 05:08:50