我正在尝试编写一个python脚本,它将生成我的批次的排名列表。为此,我只需要使用Web浏览器中的inspect element功能更改链接的roll-number参数。链接(相对)看起来像:
/academic/utility/AcademicRecord.jsp?loginCode=000&loginnumber=000&loginName=name&Home=ascwebsite
我只需要更改loginCode以获得我的批处理伙伴的等级。我试图使用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()
但它不起作用。它打开相同的链接,即初始卷号。事实上,我尝试将链接的网址更改为与http://www.google.com非常不同的内容。
link.url='http://www.google.com'
link.base_url='http://www.google.com'
它仍会打开同一页面,而不是谷歌的页面。 任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
根据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)
希望有所帮助。