Ваш x=0
, а затем инкриминирует его на 1, является избыточным и не нужен, так как он повторяется в этом диапазоне range(0, 70)
. Я также не уверен, почему у вас есть counter
, поскольку вам это тоже не нужно. Вот как бы вы сделали это ниже:
ОДНАКО, я считаю, что проблема не в итерации или цикле, а в самом URL. Если вы вручную перейдете на две страницы, перечисленные ниже, содержимое не изменится:
https://www.meisamatr.com/fa/product/cat/2-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DB%8C.html#/pagesize-24/order-new/stock-1/page-1
, а затем
https://www.meisamatr.com/fa/product/cat/2-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DB%8C.html#/pagesize-24/order-new/stock-1/page-2
Поскольку сайт является динамическим, вам нужно найти другой способ перебора страницы на страницу или выяснить, какой именно URL-адрес. Так что попробуйте:
from bs4 import BeautifulSoup
import requests
for x in range(0, 70):
try:
urls = 'https://www.meisamatr.com/fa/product/cat/2-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DB%8C.html&pagesize[]=24&order[]=new&stock[]=1&page[]=' +str(x+1) + '&ajax=ok?_=1561559181560'
source = requests.get(urls).text
soup = BeautifulSoup(source, 'lxml')
print('Page: %s' %(x+1))
for figcaption in soup.find_all('figcaption'):
price = figcaption.find('span', {'class':'new_price'}).text.strip()
name = figcaption.find('a', class_='title').text
link = figcaption.find('a', class_='title')['href']
print('%s\n%s\n%s' %(price, name, link))
except:
break
Вы можете найти эту ссылку, зайдя на веб-сайт и посмотрев инструменты разработчика (Ctrl + Shift + I или щелкните правой кнопкой мыши «Inspect») -> сеть -> XHR
Когда я сделал это и затем физически щелкнул на следующую страницу, я увидел, как эти данные были обработаны, и нашел ссылочный URL.
