gpt4 book ai didi

python - Mechanize follow_link() 和 back() 的问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:40 25 4
gpt4 key购买 nike

我在 Mechanize 以下链接时遇到了问题。这是我打算做的事情的片段:

for link in mech.links(url_regex='/test/'):
mech.follow_link(link)

// Do some processing on that link

mech.back()

根据 Mechanize 示例,这应该可以正常工作。然而事实并非如此。尽管调用了 .back(),但循环结束了,即使还有更多链接需要访问。如果我注释掉 mech.follow_link(link) 和 mech.back(),将它们替换为 print link.text,它将打印出所有 50 个左右的链接。然而...只要我取消注释 mech.follow_link,循环就会在第一个 follow_link 之后立即终止。 back() 正在工作,因为如果我打印 mech.title(),然后调用 mech.back() 并再次打印 mech.title(),它会清楚地显示第一个标题,然后是“后退”页面的标题。我真的很困惑,这就是它在文档中的完成方式。不确定发生了什么。

最佳答案

海盗,我同意,这不应该发生,您所做的几乎完全符合 wwwsearch.sourceforge.net/mechanize/上的文档页面所说的;我尝试了与您的代码类似的代码,并在第一次迭代后停止的地方得到了相同的结果。

不过,我确实找到了一个解决方法,即将 links() 中的链接 URL 保存到一个列表中,然后跟踪该列表中的每个 URL:

from mechanize import Browser
br = Browser()
linklist = []
br.open(your_page_here)
for link in br.links(url_regex='/test/'): linklist.append(link.url)
for url in linklist:
br.open(url)
print br.title()

这很丑陋,你不应该这样做,但它似乎有效。

我对像这样的 bug 的 Mechanize 并不感到兴奋(我在 mechanize handling two submit buttons poorly 时遇到了一个问题),但它安装起来非常简单,看起来很便携,并且可以离线运行(通过简单的 cron 作业)很容易比较其他测试框架,如 Selenium (seleniumhq dot org),它看起来不错,但似乎更涉及实际设置和使用。

关于python - Mechanize follow_link() 和 back() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1658509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com