Использовать Scrapy FormRequest.from_response , используя в качестве параметра значения элемента, который вы хотите выбрать.Таким образом, вы можете анализировать содержимое другой страницы с помощью другого метода вашего паука.
РЕДАКТИРОВАТЬ 1:
В вашем FormRequest
есть ошибка.Измените его на:
scrapy.FormRequest.from_response(response,formdata={'txt_materia':info, 's' : '1416'})
Не думаю, что добавление параметра s : 1416
является обязательным требованием, но txt_materia
должно быть в нижнем регистре.Когда я использовал его в качестве кода выше, ответы были правильными.
В вашем after_button
методе я обнаружил две незначительные ошибки:
- Не указывать
tbody
.Используйте относительные пути, чтобы избежать их! - Как указано в сообщении об ошибке, вы не можете просто получить от Spider результат этого xpath.Вы должны вернуть запрос, BaseItem, dict или None.
Это код, который я написал для after_button
:
def after_button(self,response):
yield { "text" : response.xpath("//div[3]/table[1]//tr[1]/td[1]/b/text()").extract_first() }