Как исправить ошибку типа, несмотря на ее приведение?

Я очищаю некоторые сайты, используя selenium firefox-web-driver. Первые 7-8 ссылок правильно получают соскоблил. после этого я получаю TypeError.

В моем коде веб-драйвер Firefox создается и удаляется (driver.quit()) после анализа каждой ссылки.

уже пробовал лить его на размешивание


Traceback (most recent call last):
 File "/home/umar/PycharmProjects/ShopToBDScraper/run_scraper.py", line 21, in <module>
   main()
 File "/home/umar/PycharmProjects/ShopToBDScraper/run_scraper.py", line 13, in main
   scrape_data(line,i)
 File "/home/umar/PycharmProjects/ShopToBDScraper/scraper/bs_scraper.py", line 381, in scrape_data
   cdn = str(math.ceil(float(cdn + 8) + ((float(cdn + 8) * 15) / 100)))
TypeError: must be str, not int

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

G. Anderson 20.06.2019 22:37

отредактировал его. Это нормально?

anotherChowdhury 20.06.2019 22:41

Проблема может заключаться в том, что значение оригинальный для cdn является str, а не int, к которому можно добавить 8. Попытка преобразовать окончательный результат вычисления в str не является ни полезной, ни необходимой.

chepner 20.06.2019 22:52

тогда почему он не выдает ошибки для первых 6-7 ссылок?

anotherChowdhury 20.06.2019 22:56
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что ваша ошибка связана с тем, что 8 является целым числом, а не строкой, потому что cdn - это строка. пытаться:

cdn = str(math.ceil((float(cdn) + 8) + (((float(cdn) + 8) * 15) / 100)))

но первые 6-7 ссылок идут нормально.

anotherChowdhury 20.06.2019 23:00

Если вы переопределяете cdn как str после выполнения этих первых 6-7 ссылок, это приведет к ошибке, потому что вы не можете конкатенировать целое число + str. Прямо сейчас у вас есть float (cdn + 8), который объединит внутреннюю часть, а затем изменит ответ на float. Итак, если вы делаете str + int, вы получите ошибку типа

Anna Nevison 20.06.2019 23:02

cdn не переопределяется. Он использует один и тот же cdn для всех ссылок. Тем не менее, я применил ваше решение, и теперь оно работает нормально. Спасибо! Сам должен был заметить.

anotherChowdhury 20.06.2019 23:07

вы переопределяете cdn, потому что вы устанавливаете равным строке в этой строке кода cdn = str(math.ceil(.....) после некоторой итерации. Когда это строка, она не может конкатенировать с этим целым числом. Я не могу сказать вам, почему он работал, и внезапно остановился, не увидев полного кода, но рад, что устранил проблему для вас и счастливого парсинга!

Anna Nevison 20.06.2019 23:11

Другие вопросы по теме