ошибка парсинга веб-страниц при использовании Beautiful soup и запросы в python - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь написать код для отслеживания цены продукта на Amazon. Код ниже

import requests
from bs4 import BeautifulSoup
url='https://www.amazon.com/LunaJany-Womens-Striped-Office-Career/dp/B01DPLT4AC/ref=sxin_7_ac_d_rm?ac_md=2-2-ZHJlc3NlcyBmb3Igd29tZW4gd29yayBjYXN1YWw%3D-ac_d_rm&crid=1POYCFAFYAR8B&cv_ct_cx=dresses+for+women+casual+summer&dchild=1&keywords=dresses+for+women+casual+summer&pd_rd_i=B01DPLT4AC&pd_rd_r=0b613dda-1077-46d2-b403-af7e15840645&pd_rd_w=7Mp2P&pd_rd_wg=rNofK&pf_rd_p=a0516f22-66df-4efd-8b9a-279a864d1512&pf_rd_r=1P30PXW75XA27N3M6VDK&psc=1&qid=1592310609&sprefix=dre%2Caps%2C440&sr=1-3-12d4272d-8adb-4121-8624-135149aa9081'
        header={"user-agent":'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'}
        page=requests.get(url,headers=header)
        soup1=BeautifulSoup(page.content,"html.parser")
        soup2=BeautifulSoup(soup1.prettify(),"html.parser")
        title=soup2.find(id="productTitle").get_text()
        print(title)

При попытке распечатать заголовок я получаю сообщение об ошибке

Traceback (most recent call last):
  File "C:/Users/Patterns/PycharmProjects/RUBI/Tracks amozon prices.py", line 8, in <module>
    title=soup2.find(id="productTitle").getText()
AttributeError: 'NoneType' object has no attribute 'getText'

Может ли кто-нибудь мне помочь ??

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Это потому, что нет такого элемента, как productTitle . Когда вы используете красивый суп для загрузки содержимого страницы, вместо этого загружается страница проверки робота. Как этот. Проверка робота

Просто попробуйте распечатать содержимое страницы с помощью - print(soup2), и вы узнаете причину ошибки.

1 голос
/ 16 июня 2020

Он говорит, что NoneType не имеет атрибута "get_text", подразумевая, что соответствующий элемент с идентификатором "productTitle" не был найден, следовательно, возвращается None. None - это объект NoneType, поэтому у него нет атрибута "get_text".

Совет - попробуйте настроить productTitle. Я не уверен, но это может быть не элемент цены товара, цену на который вы пытаетесь отслеживать.

...