亚马逊登录和订单访问

时间:2020-05-07 13:40:08

标签: python cookies beautifulsoup request amazon-product-api

问题: 我已经读了几天关于低谷的文章,并尝试使用python登录到我的亚马逊帐户。但是我每次都失败。由于每篇文章都有不同的方法,因此很难找到潜在的错误源。特别是因为很多文章都超过2-3年。 我认为从目前的角度来看,最直接的方法是使用BeautifulSoup bs4requests。哪个解析器是最好的解析器,这是另一个讨论,但是我已经看到html.parserhtml5liblxml,因为大多数与亚马逊登录有关的文章都在与html.parser一起使用。我的代码,即使我以后想使用lxmlhtml5lib也是如此。 各种输入和反馈有助于总结所有要点和周转时间。 我目前正在尝试通过'https://www.amazon.de/gp/css/order-history?ref_=nav_orders_first'进入登录页面,因为'https://www.amazon.de/ap/signin'至少在我的浏览器中给了我一个错误。因此,我将转到一个页面,用户需要登录(我的订单)以转发到登录页面并尝试在该页面登录。在向另一个子站点(如切换页面)创建新的requests时是否有可能再次注销?另外,我发现使用with requests.Session() as s:的文章比起不使用意图和request而言,这是Session()网站的一种更好的方法。我正在URL中使用“ de”,但是我想可以将其与“ com”交换。

当前代码:

import bs4
from bs4 import BeautifulSoup
import requests

amazon_orders_url = r'https://www.amazon.de/gp/css/order-history?ref_=nav_orders_first'  # First time visit login
amazon_login_url = r'https://www.amazon.de/ap/signin'  # Not working by browser access

credentials = {'email': "EMAILADRESS", "password": "PASSWORD"}

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-language': 'en,de-DE;q=0.9,de;q=0.8,en-US;q=0.7',
    'referer': 'https://www.amazon.de/ap/signin'}

# print(credentials['email'])  # print Email address

with requests.Session() as s:
    s.headers = headers
    site = s.get(amazon_orders_url)  # , headers=headers

    # HTML parsing
    soup = BeautifulSoup(site.content, "html.parser")  # Alternative "html5lib" / , "html.parser" / , "lxml"

    # Print whole page
    # print(soup)

    # Check if Anmelden/Login exists
    for div in soup.find_all('div', class_='a-box'):
        headline = div.h1
        print(headline)

    signin_data = {s["name"]: s["value"]
                   for s in soup.select("form[name=signIn]")[0].select("input[name]")
                   if s.has_attr("value")}

    # signin_data = {}
    # signin_form = soup.find('form', {'name': 'signIn'})
    # for field in signin_form.find_all('input'):
    #     try:
    #         signin_data[field['name']] = field['value']
    #     except:
    #         pass

    signin_data[u'email'] = credentials['email']
    signin_data[u'password'] = credentials['password']

    post_response = s.post('https://www.amazon.de/ap/signin', data=signin_data)

    soup = BeautifulSoup(post_response.text, "html.parser")

    warning = soup.find('div', {'id': 'message_warning'})
    # if warning:
        # print('Failed to login: {0}'.format(warning.text))

    print(soup)
    # print(post_response.content)

0 个答案:

没有答案