python - Request.Response 对象不会重定向到正确的 URL

标签 python url-redirection mechanize mechanicalsoup

这里是 2 个月大的 Python 菜鸟,

我正在使用 MechanicalSoup 在网页上填写登录表单,然后我想提交该表单并转到用户个人资料页面。

尽管我的代码中没有任何错误,但在提交表单后,我仍然从我的新响应对象中获取主页的当前 url。
而且这个repsonse对象的状态码是200,说明请求已经成功了?

这是我的代码的相关部分:

def randomstring():
     letters = string.ascii_lowercase
     return ''.join(random.choice(letters) for i in range(5))



br = mechanicalsoup.StatefulBrowser(soup_config=({'features': 'html.parser'}))
browser = br.open("https://www.opinieland.nl/nl-nl")
page = br.get_current_page()

Form = br.select_form(nr=0)
form = br.get_current_form()

for tag in page.find_all(True):
   LOGIN = page.select('input[class="col-md-7 col-sm-7 col-xs-6 form-control"]')
   for i in LOGIN:
       if i.get("name") == None:
         i["name"] = randomstring()
       else:
         continue

apsuser = Form.form.select('input[class="col-md-7 col-sm-7 col-xs-6 form-    control"]')[0]
apspas = Form.form.select('input[class="col-md-7 col-sm-7 col-xs-6 form-     control"]')[1]

form.set_input({apsuser.get('name'): username, apspas.get('name'): password})
form2 = br.select_form(selector=('a[class="btn btn-danger"]'))
soup = br.submit(form2, url="https://www.opinieland.nl/nl-nl") 

如前所述,那里的代码不会显示任何错误。启动浏览器时,我可以看到表格填写正确

感谢帮助:),当然还有关于我的代码的任何其他提示!

最佳答案

MechanicalSoup 能够提交登录表单,只要它不是由 JavaScript 处理的(参见 "When to use MechanicalSoup?")。在这种情况下,我认为对 MechanicalSoup 的轻微误用会导致错误。

  • 填写表格后,您通常希望使用 br.submit_selected() 提交。 .
  • 变量 form2似乎不是表单(没有 POST 或 GET 操作),只是一个链接:
    In [9]: form2.form
    Out[9]: <a class="btn btn-danger" id="apslogin" style="margin-top:4px"> Inloggen</a>
    

  • 要提交正确的表格,您应该替换
    form2 = br.select_form(selector=('a[class="btn btn-danger"]'))
    soup = br.submit(form2, url="https://www.opinieland.nl/nl-nl") 
    


    br.submit_selected()
    

    有关展示填写和提交登录表单的完整示例,请参阅 MechanicalSoup login tutorial .

    关于python - Request.Response 对象不会重定向到正确的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47500557/

    相关文章:

    python - 从单选按钮获取输入

    php - 隐藏 url 和重定向对 AJAX POST 的影响?

    django - 在 Django 中将 http 重定向到 https(使用 sslserver)

    nginx重定向到docker容器

    Python 无法使用 urllib 或 Mechanize 检索表单

    ruby - 在 ruby​​ 中使用 Mechanize 进行网页抓取时如何解决 HTTP500 错误?

    ruby - 我如何解决这个错误?未定义的方法 `at_css' 用于 #<Mechanize::Page:0xb4b76434>

    python - 跳过损坏的 jsons python

    python - 更快地删除 pandas 数据框列中的标点符号和特殊字符的方法

    python - while 循环 Python 的编码问题