使用Python和Parse HITS登录Amazon Mechanical Turk

时间:2016-08-17 19:31:08

标签: python beautifulsoup python-requests amazon mechanicalturk

我正在尝试使用Python(2.7)自动登录Amazon Mechanical Turk并获取有关可用的一些HITS的信息。如果您尝试超过第20页,则需要登录,这是我遇到困难的地方。我试图向我们提供许多python包,包括mechanize,urllib2,最近我在stackoverflow here上使用请求找到了一个非常相关的解决方案。我添加了我的上下文所需的细微修改,见下文,但代码不起作用。响应页面再次是显示错误的登录页面:您的密码不正确。此外,原始帖子中的代码也不再适用于其上下文;显示相同的错误。所以我认为亚马逊已经改变了一些东西,我似乎无法弄清楚它是什么以及如何解决它。这条线上的任何帮助都将非常感激。

    import bs4, requests

    headers = {
        'User-Agent': 'Chrome'
    }

    from bs4 import BeautifulSoup
    url = "https://www.mturk.com/mturk/viewhits?searchWords=&pageNumber=21" \
                "&searchSpec=HITGroupSearch%23T%232%23100%23-1%23T%23%21%23%21" \
                "LastUpdatedTime%211%21%23%21&sortType=LastUpdatedTime%3A1" \
                "&selectedSearchType=hitgroups"


    with requests.Session() as s:
        s.headers = headers
        r = s.get(url)
        soup = BeautifulSoup(r.content, "html.parser")
        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[u'email'] = ''
        signin_data[u'password'] =''

        for k,v in signin_data.iteritems():
            print k + ": " + v

        action = soup.find('form', id='ap_signin_form').get('action')
        response = s.post(action, data=signin_data)

        soup = bs4.BeautifulSoup(response.text, "html.parser")
        warning = soup.find('div', {'id': 'message_error'})
        if warning:
            print('Failed to login: {0}'.format(warning.text))

0 个答案:

没有答案