#python #html #url #loops #mechanize
#python #HTML #url #циклы #механизировать
Вопрос:
Я написал следующее на python, используя модуль mechanize, чтобы распечатать HTML из списка URL-адресов:
import mechanize, fileinput
urls = open('F:Pythonurl_list.txt')
content = [x.strip() for x in urls.readlines()]
print content
browser = mechanize.Browser()
browser.open("https://login.asp")
browser.select_form(nr=0)
browser['desc'] = "xxxxx"
browser['password'] = "xxxxx"
response = browser.submit()
logincheck = response.read()
print logincheck
# now logged into site, loop through the list of urls read in from the text file and print the html for each one:
for s in content:
releasenote = browser.urlopen(s)
# error here, should be releasenote = browser.open(s)
print releasenote.geturl()
print releasenote.info()
print releasenote.read()
Однако я просто получаю следующую ошибку в оболочке python:
Traceback (most recent call last):
File "F:Pythontest.py", line 20, in <module>
releasenote = browser.urlopen(s)
File "C:Python27libsite-packagesmechanize_mechanize.py", line 628, in __getattr__
".select_form()?)" % (self.__class__, name))
AttributeError: mechanize._mechanize.Browser instance has no attribute urlopen (perhaps you forgot to .select_form()?)
Что я делаю не так? Приветствия!
Комментарии:
1. Попробуйте создать новый браузер непосредственно перед циклом for и используйте этот новый браузер в цикле for. Я думаю, что выбор формы мог каким-то образом изменить состояние браузера, чтобы вызвать у вас эту ошибку. Я не совсем уверен
Ответ №1:
Это mechanize.urlopen(s)
или как вы сказали browser.open(s)
.
Комментарии:
1. нашел свою ошибку!:
releasenote = browser.urlopen(s)
должно было быть:releasenote = browser.open(s)
что за тупые роли2. @4rd2: пожалуйста, отметьте этот ответ как тот, который решает вашу проблему; спасибо.