使用 selenium 使用 css 选择器查找后如何获取项目 url
How to get item url after finding with css selector using selenium
我试图从网页中提取 url(link),我使用“find_element_by_css_selector”来获取我想要的项目。此项目中有一个 url。我如何提取此 url.
我试过:
prod_item = browser.find_elements_by_css_selector('div.col-lg-2')
print(prod_item[0].get_attribute('href'))
但我得到“None”作为输出。我喜欢使用 css_selector,因为页面上有许多相似的项目,而 'div.col-lg-2' 是它们共有的属性。
如何解决这个问题并获得 link?
这里是完整的代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
url = 'https://auctionmaxx.com/Browse?page=0'
browser = webdriver.Firefox()
browser.get(url)
prod_item = WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.col-lg-2[href]")))
print(prod_item[4].get_attribute('href'))
这一定有用,
browser.find_elements_by_css_selector('a').get_attribute('href')
代码似乎是合法的,所以起初我会尝试检查原始 html 源代码(使用 curl 或禁用 JS 的浏览器)。也许 href 属性在您尝试获取它的值时不包含任何 url,并且该值在其他属性中(例如在 data-href 中)或者它是通过 ajax 动态加载的。无论如何,请查看 Waits or this link 的文档,您可以在其中找到一些提示,了解如何等待特定内容可用。
要打印 href 属性的值,您必须引入 for the visibility_of_all_elements_located()
and you can use either of the following :
使用CSS_SELECTOR
:
browser.get("https://auctionmaxx.com/Browse?page=0")
prod_item = WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.col-lg-2>div a")))
print(prod_item[0].get_attribute('href'))
在一行中使用 CSS_SELECTOR
:
browser.get("https://auctionmaxx.com/Browse?page=0")
print(WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.col-lg-2>div a")))[0].get_attribute('href'))
控制台输出:
https://auctionmaxx.com/Listing/Details/321939965/NEW-PUREX-LAUNDRY-DETERGENT-924L
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
我试图从网页中提取 url(link),我使用“find_element_by_css_selector”来获取我想要的项目。此项目中有一个 url。我如何提取此 url.
我试过:
prod_item = browser.find_elements_by_css_selector('div.col-lg-2')
print(prod_item[0].get_attribute('href'))
但我得到“None”作为输出。我喜欢使用 css_selector,因为页面上有许多相似的项目,而 'div.col-lg-2' 是它们共有的属性。 如何解决这个问题并获得 link?
这里是完整的代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
url = 'https://auctionmaxx.com/Browse?page=0'
browser = webdriver.Firefox()
browser.get(url)
prod_item = WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.col-lg-2[href]")))
print(prod_item[4].get_attribute('href'))
这一定有用,
browser.find_elements_by_css_selector('a').get_attribute('href')
代码似乎是合法的,所以起初我会尝试检查原始 html 源代码(使用 curl 或禁用 JS 的浏览器)。也许 href 属性在您尝试获取它的值时不包含任何 url,并且该值在其他属性中(例如在 data-href 中)或者它是通过 ajax 动态加载的。无论如何,请查看 Waits or this link 的文档,您可以在其中找到一些提示,了解如何等待特定内容可用。
要打印 href 属性的值,您必须引入 visibility_of_all_elements_located()
and you can use either of the following
使用
CSS_SELECTOR
:browser.get("https://auctionmaxx.com/Browse?page=0") prod_item = WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.col-lg-2>div a"))) print(prod_item[0].get_attribute('href'))
在一行中使用
CSS_SELECTOR
:browser.get("https://auctionmaxx.com/Browse?page=0") print(WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.col-lg-2>div a")))[0].get_attribute('href'))
控制台输出:
https://auctionmaxx.com/Listing/Details/321939965/NEW-PUREX-LAUNDRY-DETERGENT-924L
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC