为什么我可以使用python mechanize登录amazon网站,但不能使用request或urllib2登录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么我可以使用python mechanize登录amazon网站,但不能使用request或urllib2登录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3993字,纯文字阅读大概需要6分钟。
内容图文
我可以使用从here发现的以下python代码登录到amazon.com:
import mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13")]
sign_in = br.open('https://www.amazon.com/gp/sign-in.html')
br.select_form(name="sign-in")
br["email"] = 'test@test.com'
br["password"] = 'test4test'
logged_in = br.submit()
orders_html = br.open("https://www.amazon.com/gp/css/history/orders/view.html?orderFilter=year-%s&startAtIndex=1000" % 2013)
但是使用请求模块和urllib2后面的两个部分不起作用.
import requests
import sys
username = "test@test.com"
password = "test4test"
login_data = ({
'email' : fb_username,
'password' : fb_password,
'flex_password': 'true'})
url = 'https://www.amazon.com/gp/sign-in.html'
agent ={'User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.57 Safari/537.1'}
session = requests.session(config={'verbose': sys.stderr}, headers = agent)
r = session.get('http://www.amazon.com')
r1 = session.post(url, data=login_data, cookies=r.cookies)
r2 = session.post("https://www.amazon.com/gp/css/history/orders/view.html?orderFilter=year-2013&startAtIndex=1000", cookies = r1.cookies)
#
import urllib2
import urllib
import cookielib
amazon_username = "test@test.com"
amazon_password = "test4test"
url = 'https://www.amazon.com/gp/sign-in.html'
cookie = cookielib.CookieJar()
login_data = urllib.urlencode({'email' : amazon_username, 'password' : amazon_password,})
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.57 Safari/537.1')]
opener.open('www.amazon.com')
response = opener.open(url, login_data)
response = opener.open("https://www.amazon.com/gp/css/history/orders/view.html?orderFilter=year-%s&startAtIndex=1000" % 2013, login_data)
在发布亚马逊日志时,我做错了什么?这是我第一次发表表格.任何帮助表示赞赏.
我更喜欢使用urllib2或者请求,因为我的所有其他代码都使用这两个模块.
此外,任何机构可以评论机械化,请求和urllib2之间的速度性能,以及其他两个机械化的优势吗?
~~~~~~~~~~~新~~~~~~~~~~~~
按照C.C.的说明,我现在可以使用urllib2登录.但是当我尝试对请求做同样的事情时,它仍然无效.任何人都可以给我一个线索吗?
import requests
import sys
fb_username = "test@test.com"
fb_password = "xxxx"
login_data = ({
'email' : fb_username,
'password' : fb_password,
'action': 'sign-in'})
url = 'https://www.amazon.com/gp/sign-in.html'
agent ={'User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.57 Safari/537.1'}
session = requests.session(config={'verbose': sys.stderr}, headers = agent)
r = session.get(url)
r1 = session.post('https://www.amazon.com/gp/flex/sign-in/select.html', data=login_data, cookies=r.cookies)
b = r1.text
解决方法:
关于你的urllib2方法,你缺少两件事.
首先,如果你看一下sign-in.html的来源,它会显示出来
<form name="sign-in" id="sign-in" action="/gp/flex/sign-in/select.html" method="POST">
意思是表单应该提交给select.html.
其次,除了电子邮件和密码,您还需要选择是否是现有用户:
<input id="newCust" type="radio" name="action" value="new-user"...>
...
<input id="returningCust" type="radio" name="action" value="sign-in"...>
它应该看起来像这样:
import cookielib
import urllib
import urllib2
amazon_username = ...
amazon_password = ...
login_data = urllib.urlencode({'action': 'sign-in',
'email': amazon_username,
'password': amazon_password,
})
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
opener.addheaders = [('User-agent', ...)]
response = opener.open('https://www.amazon.com/gp/sign-in.html')
print(response.getcode())
response = opener.open('https://www.amazon.com/gp/flex/sign-in/select.html', login_data)
print(response.getcode())
response = opener.open("https://www.amazon.com/") # it should show that you are logged in
print(response.getcode())
内容总结
以上是互联网集市为您收集整理的为什么我可以使用python mechanize登录amazon网站,但不能使用request或urllib2登录全部内容,希望文章能够帮你解决为什么我可以使用python mechanize登录amazon网站,但不能使用request或urllib2登录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。