import argparse
from getpass import getpass
import mechanicalsoup
parser = argparse.ArgumentParser(description="Login to Northwest.1")
parser.add_argument("username")
args = parser.parse_args()
args.password = getpass("Please enter your Northwest password: ")
browser = mechanicalsoup.StatefulBrowser()
browser.open("https://thenorthwest.myatonce.com/login")
browser.select_form('#login-form')
browser["username"] = args.username
browser["password"] = args.password
resp = browser.submit_selected()
browser.follow_link("catalog")
browser.follow_link("?cl=45&gndr=65")
browser.launch_browser()嗯,呃。我可以跟踪到目录的链接,https://thenorthwest.myatonce.com/catalog/,所以登录和转发到目录没有问题,但我不能遵循链接到指定的目录页。https://thenorthwest.myatonce.com/catalog/?cl=45&gndr=65有人能帮忙吗?
全错误代码和下方可能的闪击警报
Traceback (most recent call last):
File "C:\Users\emosc\PycharmProjects\achyls\main.py", line 14, in <module>
browser.follow_link("login")
l_browser.py", line 354, in follow_link
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 324, in _find_link_internal
return self.find_link(*args, **kwargs)
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 298, in find_link
raise LinkNotFoundError()
mechanicalsoup.utils.LinkNotFoundError
PS C:\Users\emosc\PycharmProjects\achyls> py main.py anatoliawholesale
Please enter your Northwest password:
PS C:\Users\emosc\PycharmProjects\achyls> py main.py anatoliawholesale
Please enter your Northwest password:
Traceback (most recent call last):
File "C:\Users\emosc\PycharmProjects\achyls\main.py", line 18, in <module>
browser.follow_link("?cl=45&gndr=64")
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 354, in follow_link
link = self._find_link_internal(link, bs4_args,
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 324, in _find_link_internal
return self.find_link(*args, **kwargs)
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 296, in find_link
links = self.links(*args, **kwargs)
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 281, in links
all_links = [a for a in all_links
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 282, in <listcomp>
if re.search(url_regex, a['href'])]
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\re.py", line 200, in sea
rch
return _compile(pattern, flags).search(string)
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\re.py", line 303, in _co
mpile
p = sre_compile.compile(pattern, flags)
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\sre_compile.py", line 76
4, in compile
p = sre_parse.parse(p, flags)
in parse
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\sre_parse.py", line 443,
in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\sre_parse.py", line 668,
in _parse
raise source.error("nothing to repeat",
re.error: nothing to repeat at position 0
PS C:\Users\emosc\PycharmProjects\achyls> py main.py anatoliawholesale
Please enter your Northwest password:
PS C:\Users\emosc\PycharmProjects\achyls> py main.py anatoliawholesale
Please enter your Northwest password:
Traceback (most recent call last):
File "C:\Users\emosc\PycharmProjects\achyls\main.py", line 19, in <module>
browser.follow_link("?cl=45&gndr=65")
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 354, in follow_link
link = self._find_link_internal(link, bs4_args,
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 324, in _find_link_internal
return self.find_link(*args, **kwargs)
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 296, in find_link
links = self.links(*args, **kwargs)
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 281, in links
all_links = [a for a in all_links
File "C:\Users\emosc\PycharmProjects\achyls\venv\lib\site-packages\mechanicalsoup\statefu
l_browser.py", line 282, in <listcomp>
if re.search(url_regex, a['href'])]
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\re.py", line 200, in sea
rch
return _compile(pattern, flags).search(string)
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\re.py", line 303, in _co
mpile
p = sre_compile.compile(pattern, flags)
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\sre_compile.py", line 76
4, in compile
p = sre_parse.parse(p, flags)
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\sre_parse.py", line 948,
in parse
p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\sre_parse.py", line 443,
in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
File "C:\Users\emosc\AppData\Local\Programs\Python\Python310\lib\sre_parse.py", line 668,
in _parse
raise source.error("nothing to repeat",
re.error: nothing to repeat at position 0发布于 2022-02-04 08:54:56
来自机械汤教程
Browser.follow_link(“窗体”) >>> browser.url 'http://httpbin.org/forms/post‘ 我们将正则表达式
"forms"传递给follow_link(),后者跟踪文本与此表达式匹配的链接。还有许多其他的方法来调用follow_link(),但是我们会回到它。
这意味着,您作为第一个参数传递给follow_link的内容被视为模式。你做到了
browser.follow_link("?cl=45&gndr=65")请注意,?在正则表达式中有着特殊的含义--零或前一件事之一。没有先前的事情,换句话说,在0位置没有什么可重复的。请尝试使用re.escape来缓解此问题,请按照以下方式,在import argparse之前添加import re,然后替换
browser.follow_link("?cl=45&gndr=65")使用
browser.follow_link(re.escape("?cl=45&gndr=65"))https://stackoverflow.com/questions/70983541
复制相似问题