Как сделать l oop несколько страниц на селене python BeautifulSoup - PullRequest
0 голосов
/ 19 марта 2020

Прямо сейчас мой код позволяет кликать по каждому товару этой страницы "https://www.daraz.com.bd/audio/?page=1&spm=a2a0e.home.cate_2.2.49c74591NNpWDU%27", что приводит меня на страницу с описанием товара каждого товара. Кто-нибудь может сказать мне, как я буду l oop несколько страниц, таких как page2, page3, page4? вот мой код

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from bs4 import BeautifulSoup

#argument for incognito Chrome
option = Options()
option.add_argument("--incognito")


browser = webdriver.Chrome(options=option)

browser.get("https://www.daraz.com.bd/audio/?page=1&spm=a2a0e.home.cate_2.2.49c74591NNpWDU%27")


# Wait 20 seconds for page to load
timeout = 20
try:
    WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='c16H9d']")))
except TimeoutException:
    print("Timed out waiting for page to load")
    browser.quit()


soup = BeautifulSoup(browser.page_source, "html.parser")

product_items = soup.find_all("div", attrs={"data-qa-locator": "product-item"})
for item in product_items:
    item_url = f"https:{item.find('a')['href']}"
    print(item_url)

    browser.get(item_url)

    item_soup = BeautifulSoup(browser.page_source, "html.parser")
    # Use the item_soup to find details about the item from its url.
    container = item_soup.find_all("div",attrs={"id":"container"})
    for items in container:
        title = items.find("div",{"class":"pdp-product-title"})
        print(title)



browser.quit()

теперь он получает информацию только со страницы 1. Я хочу, чтобы он также собирал информацию с других страниц, таких как page2, page3, page4, page5

1 Ответ

1 голос
/ 20 марта 2020

Как вы можете видеть на веб-сайте, когда вы нажимаете на странице 2 в URL-адресе, единственное, что меняется, - это номер страницы, поэтому это легко сделать с помощью циклов. для лучшего кода вы можете создать переменную с именем url и изменить ее для каждой страницы:

for page_num in range(1, 10): # change the range as you want to
    url = "https://www.daraz.com.bd/audio/?page={}&spm=a2a0e.home.cate_2.2.49c74591NNpWDU%27".format(page_num)

и поместить оставшуюся часть кода в эту l oop (за исключением последней строки)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...