我尝试如下从aliexpress抓取交易历史记录,但order1,order2和country的输出仅显示会话和元素,而未显示示例,因为order =“ 1 piece”或country =“ FR”

import time
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://www.aliexpress.com/item/Modyle-2017-New-Fashion-Her-King-and-His-Queen-Stainless-Steel-Wedding-Rings-for-Women-Men/32827876813.html?spm=2114.search0104.3.2.b0db7b0bXHTbvz&ws_ab_test=searchweb0_0,searchweb201602_1_10065_10068_10890_319_10546_317_10548_5730311_10696_453_10084_454_10083_5729211_10618_10307_538_537_536_10059_10884_10887_100031_321_322_10103,searchweb201603_51,ppcSwitch_0&algo_expid=0ffd4f5b-afac-45be-ac7e-a0c97769e137-0&algo_pvid=0ffd4f5b-afac-45be-ac7e-a0c97769e137&transAbTest=ae803_3")
time.sleep(20)
rows = len(driver.find_elements_by_xpath('//*[@id="j-transaction-feedback"]/div[2]/div[1]/div[1]/table/tbody/tr'))

print(rows)

a1 = driver.find_elements_by_xpath('//*[@id="j-transaction-feedback"]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[1]/div/i')

order1 = driver.find_elements_by_xpath('//*[@id="j-transaction-feedback"]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[2]/div[1]')
order2 = driver.find_elements_by_xpath('//*[@id="j-transaction-feedback"]/div[2]/div[1]/div[1]/table/tbody/tr[2]/td[2]/div[1]')
country = driver.find_elements_by_xpath('//*[@id="j-transaction-feedback"]/div[2]/div[1]/div[1]/table/tbody/tr[2]/td[1]/div/div/b')

print(order1)
print(order2)
print(country)


输出

/usr/local/bin/python3.7 /Users/nayot/PycharmProjects/aliexpress/test2.py
20
[<selenium.webdriver.remote.webelement.WebElement (session="abbb90b60a6a662884cb1642398d2ec4", element="0.5214822951220621-22")>]
[<selenium.webdriver.remote.webelement.WebElement (session="abbb90b60a6a662884cb1642398d2ec4", element="0.5214822951220621-23")>]
[<selenium.webdriver.remote.webelement.WebElement (session="abbb90b60a6a662884cb1642398d2ec4", element="0.5214822951220621-24")>]

Process finished with exit code 0

最佳答案

Stylez指出,使用.text属性是正确的方法。但是,似乎您没有正确选择元素,例如

driver.find_elements_by_xpath


返回一个空列表。如果您只选择一个元素,则应使用

driver.find_element_by_xpath


(请注意缺少的“ s”)。如果使用列表方法,则显然需要直接通过索引访问元素。

另请注意,您不一定需要输入整个XPath。

'//div[@class="order-num"]'


通常应该也可以正常工作。同样,只有在您实际上正确选择了网站上的元素的情况下。

关于python - Selenium 与速卖通交易历史,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53979045/

10-11 00:14