使用MechanicalSoup访问隐藏表单将导致“值错误:没有右引号”

2024-06-25 23:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我的英语不是我的母语。在

问题

我尝试使用docs中描述的MechanicalSoup访问和操作表单。我使用chrome内置的“调试模式”(F12)使用给定的登录表单成功登录到页面。在

form action="https://www.thegoodwillout.de/customer/account/loginPost/"

可以使用chrome“调试器”找到表单here

这工作正常,不会产生任何错误。我试着升级我的游戏,转到一个更复杂的形式,这个形式在this网站上给出。我设法找到了这个片段

^{pr2}$

这将导致

ValueError: No Closing quotation

这很奇怪,因为它没有使用任何特殊字符,我仔细检查了一遍,以便每个报价单都正确结束

我试过什么

我试着寻找一个更具体的表格,将适用于给定的鞋码,但这个表格似乎管理网站上的所有内容。我在网上搜索,发现有几篇文章指向python中的一个bug,我不敢相信这是真的!在

附带错误日志的源代码

import mechanicalsoup

browser = mechanicalsoup.StatefulBrowser()
browser.open("https://www.thegoodwillout.de/nike-air-vortex-schwarz-weiss-anthrazit-903896-010")
browser.select_form('form[action="https://www.thegoodwillout.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudGhlZ29vZHdpbGxvdXQuZGUvbmlrZS1haXItdm9ydGV4LXNjaHdhcnotd2Vpc3MtYW50aHJheml0LTkwMzg5Ni0wMTA_X19fU0lEPVU,/product/115178/form_key/r19gQi8K03l21bYk/"]')

NOTE: it all seems to track down to a module called shlex which is causing the error

最后是error log

如果你能为我指出正确的方向并链接一些我还没有完全调查过的网站,那将是非常有帮助的。在


Tags: tohttpsbrowserform表单网站www错误
1条回答
网友
1楼 · 发布于 2024-06-25 23:21:43

这实际上是MechanicalSoup用来在HTML文档中导航的库BeautifulSoup4的一个问题,与在CSS选择器中使用逗号(,)有关。在

BeautifulSoup在逗号上拆分CSS选择器,因此将查询视为:browser.select_form('form[action="https://www.thegoodwillout.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudGhlZ29vZHdpbGxvdXQuZGUvbmlrZS1haXItdm9ydGV4LXNjaHdhcnotd2Vpc3MtYW50aHJheml0LTkwMzg5Ni0wMTA_X19fU0lEPVU和{},分别解析。当分析第一个时,它发现一个开的",但没有结束的",并出现错误。在

它在某种程度上是一个特性(您可以指定多个CSS选择器作为select)的参数,但在这里它作为一个特性是没有用的(当您期望一个对象时提供几个选择器是没有意义的)。在

解决方案:不要在CSS选择器中使用逗号。你可能有其他的标准来匹配你的表格。在

您可以尝试使用%2C而不是逗号(未测试)。在

相关问题 更多 >