我正在尝试编写一个 python 脚本来生成我的批处理的排名列表。为此,我只需使用网络浏览器中的检查元素功能更改链接的卷号参数。链接(相对)看起来像:
/academic/utility/AcademicRecord.jsp?loginCode=000&loginnumber=000&loginName=name&Home=ascwebsite
我只需要更改登录代码即可获取我的批处理队友的成绩。我正在尝试使用 python 迭代所有的卷号并生成一个排名列表。我使用 mechanize 库使用 python 打开网站。相关代码部分:
br = mechanize.Browser()
br.set_handle_robots(False)
response = br.open('link_to_the_page')
然后,我进行必要的身份验证并导航到相应的页面,其中包含查看成绩的链接。
然后我找到了这样的相关链接:
for link in br.links(url_regex='/academic/utility/AcademicRecord.jsp?'):
现在,我在其中适本地更改了链接的 url 和属性。 然后我使用以下命令打开链接:
response=br.follow_link(link)
print response.read()
但是它不起作用。它会打开相同的链接,即带有初始卷号的链接。事实上,我尝试将链接的 url 更改为非常不同的内容,例如 http://www.google.com .
link.url='http://www.google.com'
link.base_url='http://www.google.com'
它仍然打开相同的页面,而不是谷歌的页面。 任何帮助将不胜感激。
最佳答案
根据source code 、follow_link()
和 click_link()
使用在 link initialization 期间设置的链接的 absolute_url
属性。 。并且,您仅设置 url
和 base_url
属性。
解决方案是更改循环中链接的 absolute_url
:
BASE_URL = 'link_to_the_page'
for link in br.links(url_regex='/academic/utility/AcademicRecord.jsp?'):
modified_link = ...
link.absolute_url = mechanize.urljoin(BASE_URL, modified_link)
br.follow_link(link)
希望有帮助。
关于python - 更改 python mechanize 中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23677442/