如何循环添加每个项目数据

时间:2019-12-01 10:33:50

标签: python selenium web-scraping

我可以获得数据“名称”,“喜欢”,“价格”。但是单击每个项目链接后,我无法获得项目详细信息。

它提供了一个过时的元素引用:元素未附加到页面文档错误。

我不知道如何循环添加每个项目数据。

# coding: UTF-8
from time import sleep
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import csv

import sys
args = sys.argv


if __name__ == '__main__':
items_list = []


options = Options()
options.add_argument('--headless')


driver = webdriver.Chrome(executable_path="", chrome_options=options)

query = args[1]

driver.get("https://www.mercari.com/jp/search/?sort_order=&keyword=&category_root=&brand_name=&brand_id=&size_group=&price_min=&price_max=&status_trading_sold_out=1")
    sleep(1)

    page = 1

    next_page = driver.find_elements_by_css_selector("body > div.default-container > main > div.l-content > ul > li.pager-next.visible-pc > ul > li:nth-child(1) > a")

    while True:
        sleep (3)
        if len(next_page) > 0:

            items =  driver.find_elements_by_xpath("/html/body/div[1]/main/div[1]/section/div[2]/section")
            for i in range(0,len(items)):
                sleep(3)
                name = items[i].find_element_by_xpath("a/div/h3").text
                like = items[i].find_element_by_xpath("a/div/div/div[2]/span").text
                price = items[i].find_element_by_xpath("a/div/div/div[1]").text

                items[i].find_element_by_xpath("a").click()

                sleep(1)

                user = driver.find_element_by_xpath("/html/body/div[1]/section/div[1]/table/tbody/tr[1]/td/a").text
                rate = driver.find_element_by_xpath("/html/body/div[1]/section/div[1]/table/tbody/tr[1]/td/div/div[1]/span").text

          items_list.append([name,like,price,user,rate])

                driver.back()

            page+=1

            btn = driver.find_element_by_css_selector("li.pager-next .pager-cell:nth-child(1) a").get_attribute("href")
            driver.get(btn)
            print("Moving to next page......")

        else:
            print("no pager exist anymore")
            break

    driver.close()
    driver.quit()

我添加了代码,使您更容易理解。 谢谢。

0 个答案:

没有答案