我想创建一个程序,该程序将抓取我的多个网站的帐户阅读列表,并将它们添加到我的
Safari
阅读列表中。但是,我不能只使用普通链接进行爬网,因为它需要登录。
我该如何克服这个问题?
您可能正在使用 HTTP GET 消息来加载 HTML 页面。为了登录,带有正确凭据(用户名和密码)的 HTTP POST 消息将会有所帮助。
以下是登录社交网站的 HTTP POST 消息示例:
post_message = ('POST /accounts/login/ / HTTP/1.1\r\n'
'Host: www.fakebook.com\r\n'
'Connection: keep-alive\r\n'
'Content-length: ' + contentlength +'\r\n'
'Origin: http://'+host+'\r\n'
'User-Agent: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.1058$
'Content-type: application/x-www-form-urlencoded\r\n'
'Accept-Encoding: gzip, deflate\r\n'
'Cookie: csrftoken='+csrftoken+'; sessionid= '+sessionid+'\r\r\n\n')
# Add POST body to header.
post_message += ('username='+username+'&password='+password+'&csrfmiddlewaretoken='+csrftoken+'&next=/fakebook/\r\n\r\n')
您必须从登录网站的 HTML 页面中提取 sessionid 和 csrftoken。
有关 HTTP 状态代码的更多信息,请参阅:[http://www.jmarshall.com/easy/http/][1]