Проблема с сканированием источника страницы в Python - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь просканировать название продукта и другую информацию на сайте. Есть категория, а затем страница. На странице есть список товаров. Я щелкаю один из продуктов в списке и сканирую информацию (название и т. Д. c.). После сканирования я нажимаю go, чтобы вернуться к списку. Я нажимаю на следующий один из продуктов в списке, пока не определим c страницу и категорию.

Это моя логика c.

Существует проблема, связанная с 'для i в диапазоне (0,20): 'driver.get(url) html = driver.page_source soup = BeautifulSoup(html, 'html.parser') html и в супе есть page_source (информация) о списке товаров, а не информация о товаре. Я пытался получить текущий URL-адрес и получить информацию, но источник продолжает иметь информацию о предыдущей странице.

Мне нужна помощь по этому поводу.

def get_search_page_url(category, page):
    return('https://www.missycoupons.com/zero/board.php#id=hotdeals&category={}&page={}'.format(category, page))

def get_prod_items(prod_items):
    prod_data = []

    for prod_item in prod_items:

        try:
            title = prod_item.select('div.rp-list-table-row.normal.post')[0].text.strip()
        except:
            title =''
        prod_data.append([title])

    return prod_data

#####
driver = webdriver.Chrome('C:/chromedriver.exe')

driver.implicitly_wait(10)

prod_data_total =[]
for category in range(1, 2):
    for page in range(1, 2): 

        url = get_search_page_url(category, page)
        driver.get(url)

        time.sleep(15)

        for i in range(0,20):
            driver.find_elements_by_css_selector("div.rp-list-table-cell.board-list.mc-l-subject>a")[i].click()
            url=driver.current_url
            driver.get(url)
            html = driver.page_source
            soup = BeautifulSoup(html, 'html.parser')

            prod_items = soup.select('div#mc_view_title')
            prod_item_list = get_prod_items(prod_items)

            prod_data_total = prod_data_total + prod_item_list

            driver.back()
            time.sleep(5)
...