我正在尝试使用 scrapy 从
thiseBay 列表中删除
Monday, 9:30 AM
。
来自 scrapy shell
scrapy shell https://www.ebay.com/itm/145599690533?
:
>>> response.css('span.ux-timer__time-left::text')
[]
我还尝试从 Firefox Dev 复制 css 路径和 xpath,但他们给出了相同的结果。
我怀疑这个问题与明文之前的
::before
有关,但我对此几乎一无所知。
我错过了什么?
事实上,你并没有错过任何东西。您的元素选择是正确的,但 scrapy shell 没有得到任何结果,因为该值是由 javaScript 填充的,而 scrapy 无法模仿它。
举个例子,你的 css 选择正在使用 selenium 和 beautifulsoup 一起工作:
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
#chrome to stay open
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
driver.get("https://www.ebay.com/itm/145599690533?")
time.sleep(5)
soup = BeautifulSoup(driver.page_source, 'lxml')
date = soup.select_one('span.ux-timer__time-left').get_text()
print(date)