如何使用selenium / python获取没有class / id的文本?

问题描述 投票:0回答:1

我正在尝试使用python / selenium从此页面(https://www.artprice.com/artist/844/hans-arp/lots/pasts)获取变量列表(日期,大小,介质等)。

对于标题,它很容易使用:

titles = driver.find_elements_by_class_name("sln_lot_show")
      for title in titles:
          print(title.text)

然而,其他变量似乎是源代码中的文本,没有可识别的id或类。

例如,要获取我尝试过的日期:

dates_made = driver.find_elements_by_xpath("//div[@class='col-sm-6']/p[1]")
          for date_made in dates_made:
              print(date_made.get_attribute("date"))

dates_made = driver.find_elements_by_xpath("//div[@class='col-sm-6']/p[1]/date")
           for date_made in dates_made:
               print(date_made.text)

它们都不会产生错误,但不会打印任何结果。

这个文本有什么方法,没有特定的类或ID?

具体的HTML在这里:

......

<div class="col-xs-8 col-sm-6">
  <p>
   <i><a id="sln_16564482" class="sln_lot_show" href="/artist/844/hans-arp/print-multiple/16564482/vers-le-blanc-infini" title="&quot;Vers le Blanc Infini&quot;" ng-click="send_ga_event_now('artist_past_lots_search', 'select_lot_position', 'title', {eventValue: 1})">
        "Vers le Blanc Infini"
   </a></i>
   <date>
    (1960)
   </date>
  </p>
  <p>
   Print-Multiple, Etching, aquatint,
    <span ng-show="unite_to == 'in'" class="ng-hide">15 3/4 x 18 in</span>
    <span ng-show="unite_to == 'cm'">39 x 45 cm</span>
  </p>
python html selenium selenium-webdriver web-scraping
1个回答
0
投票

渐进模式,在Javascript下方将返回二维数组(批次和详细信息 - 0,1,2,8,9您的索引):

lots = driver.execute_script("[...document.querySelectorAll(".lot .row")].map(e => [...e.querySelectorAll("p")].map(e1 => e1.textContent.trim()))")

经典模式:

lots = driver.find_elements_by_css_selector(".lot .row")
for lot in lots:
    lotNo = lot.find_element_by_xpath("./div[1]/p[1]").get_attribute("textContent").strip()
    title = lot.find_element_by_xpath("./div[2]/i").get_attribute("textContent").strip()
    details = lot.find_element_by_xpath("./div[2]/p[2]").get_attribute("textContent").strip()
    date = lot.find_element_by_xpath("./div[3]/p[1]").get_attribute("textContent").strip()
    country = lot.find_element_by_xpath("./div[3]/p[2]").get_attribute("textContent").strip()
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.