Python: RoboBrowser TypeError: 'NoneType' - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь собрать информацию о ценах на некоторые товары на Tessco.com. Я нашел RoboBrowser и несколько учебных пособий. После урока у меня есть ошибка, где нет плаката. Я не уверен, что нужно изменить, чтобы исправить проблему.

Код выглядит следующим образом:

import re
import config
from robobrowser import RoboBrowser
br = RoboBrowser(history=True)

br.open("https://www.tessco.com/login")
form = br.get_form()
form['userID'] = config.TESSCO_USERNAME
form['password'] = config.TESSCO_PASSWORD
br.submit_form(form)

Глядя на инспектора в Google Chrome, я вижу идентификаторы userID и password для разделов, требующих ввода пользователем.

Я предполагаю, что есть проблема с тем, как RoboBrowser ищет форму и возвращает None.

Мое сообщение об ошибке:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-58-6c3d8fcb718d> in <module>
      1 form = br.get_form()
----> 2 form['userID'] = config.TESSCO_USERNAME
      3 form['password'] = config.TESSCO_PASSWORD
      4 br.submit_form(form)

TypeError: 'NoneType' object does not support item assignment

Я очень не знаю, что не так. Любые советы, чтобы указать мне в правильном направлении?

1 Ответ

1 голос
/ 02 июля 2019

https://robobrowser.readthedocs.io/en/latest/api.html#robobrowser.browser.RoboBrowser.get_form

Цитата с их сайта:

Возвращает: тег BeautifulSoup, если найден, иначе нет

Это означает, что RoboBrowser можетне найти форму на этом сайте.

Невозможно найти форму, потому что форма в https://www.tessco.com/login загружается через javascript.

Поскольку RoboBrowser не выполняет javascript, форма никогда не загружалась, и поэтому RoboBrowser может

Возможно, вы захотите попробовать что-то вроде selenium , которое на самом деле запускает фоновый браузер, а не просто загружает HTML

...