#python #web-scraping #beautifulsoup
#python #очистка веб-страниц #beautifulsoup
Вопрос:
Я новичок в веб-очистке, поэтому здесь я написал код для веб-очистки Amazon, но я получаю ошибку при разбивке на страницы, поэтому не могли бы вы подсказать мне, как я могу исправить эту ошибку. взгляните на мой код:
from requests_html import HTMLSession
from bs4 import BeautifulSoup as bs
url = 'https://www.amazon.com/s?k=oneplus 8 proamp;crid=341BPYMDWRS5Wamp;qid=1606986946amp;sprefix=oneplus,aps'
s = HTMLSession()
def getdata(url):
r = s.get(url)
soup = bs(r.text,'html.parser')
return soup
def nextpage(soup):
page = soup.find('ul', {'class':'a-pagination'})
if not page.find('li', {'class':'a-disabled a-last'}):
url = 'https://www.amazon.com' str(page.find('li', {'class':'a-selected'}).find('a')['href'])
return url
else:
return
while True:
soup = getdata(url)
url = nextpage(soup)
if not url:
break
print(url)
И я получаю эту ошибку:
Трассировка (последний последний вызов): файл «C:UsersDELLPycharmProjectsfirstAmazon.py «, строка 34, в файле url = nextpage(soup) «C:UsersDELLPycharmProjectsfirstAmazon.py «, строка 27, на следующей странице, если не страница.find(‘li’, {‘class’:’a-disabled’}): ошибка атрибута: ‘Нетипичный’ у объекта нет атрибута ‘find’
Комментарии:
1. Возникает ли ошибка до достижения последней страницы?
Ответ №1:
В сообщении об ошибке указывается, что page
None
это может произойти, если указанное выше soup.find()
не может найти атрибут и, следовательно, возвращает None
. Вам нужно будет проверить, действительно ли атрибут был найден, прежде чем продолжить поиск чего-либо еще.
Поэтому вместо:
def nextpage(soup):
page = soup.find('ul', {'class':'a-pagination'})
if not page.find('li', {'class':'a-disabled a-last'}):
url = 'https://www.amazon.com' str(page.find('li', {'class':'a-selected'}).find('a')['href'])
return url
else:
return
это должно выглядеть так:
def nextpage(soup):
page = soup.find('ul', {'class':'a-pagination'})
if page is None:
# page not found; return or do something else
return
elif not page.find('li', {'class':'a-disabled a-last'}):
url = 'https://www.amazon.com' str(page.find('li', {'class':'a-selected'}).find('a')['href'])
return url
else:
return