Я пишу код для извлечения всех продуктов из заданных URL-адресов. Он работает нормально, но некоторые URL-адреса содержат много страниц, поэтому я пытаюсь получить все последующие страницы, найдя ul, содержащий страницы, URL, проблема в том, что он отображается толькопервые 3 страницы и последняя страница
Нумерация страниц ul
<li class="plp-pagination__nav disable">
<a href="" rel="prev" class="plp-pagination__navpre">
previous </a>
</li>
<li class="plp-pagination__nav active"><a class="plp-pagination__navpages" href="javascript:void(0);">1</a></li>
<li class="plp-pagination__nav"><a class="plp-pagination__navpages" href="here is the page url ">2</a></li>
<li class="plp-pagination__nav"><a class="plp-pagination__navpages" href="here is the page url">3</a></li>
<li class="plp-pagination__nav"><a class="plp-pagination__navpages" href="here is the page url">4</a></li>
<li class="plp-pagination__nav"><a class="plp-pagination__navpages" href="here is the page url">5</a></li>
<li class="plp-pagination__nav"> <span class="plp-pagination__navplaceholder"></span></li>
<li class="plp-pagination__nav"><a class="plp-pagination__navpages" href="here is the page url">54</a></li>
<li class="plp-pagination__nav">
<a class="plp-pagination__navnext" href="here is the page url" rel="next">
next</a>
</li>
</ul>
Функция чтения
def update():
df = pd.DataFrame( columns=['poduct_name','image_url','price'])
#lsit of required pages
urls= ['1st page','2nd page','3rd page']
for url in urls:
page = requests.get(url)
soup = BeautifulSoup(page.text)
#get the list of pages in pagination ul
new_pages= soup.find('ul', attrs={'class':'plp-pagination__wrapper'})
#check if there is pagination ul
if(new_pages!=None):
new_urls= new_pages.find_all('li', attrs={'class':'plp-pagination__navpages'})
for x in new_urls:
urls.append(x)
product_div= soup.find_all('div', attrs={'class':'comp-productcard__wrap'})
product_list=[]
for x in product_div:
poduct_name= x.find('p', attrs={'class':'comp-productcard__name'}).text.strip()
product_price_p= x.find('p', attrs={'class':'comp-productcard__price'}).text
product_img= x.img['src']
product_list.append({'poduct_name':poduct_name,'image_url':product_img,'price':product_price})
df = df.append(pd.DataFrame(product_list))
return df