【发布时间】:2018-09-03 19:07:20
【问题描述】:
我正在尝试使用 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=""Vers le Blanc Infini"" 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>
【问题讨论】:
-
您能否提供所需输出的样本?还要确保你有适当的权限来抓取上述网站。
-
当然。我只是想在控制台中为每件作品打印一个简单的日期列表,但之前没有看到没有类/id的元素
-
你可以写一个例子让我们知道你的目标。
-
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)我认为这应该打印出类似:1960 1954 1974 1934 等(只是示例)
-
是
dates唯一丢失的数据吗?提示:您可以使用 single 反引号 `` somecode `` 来包围代码块,并以另一个反引号结束它。它有助于提高可读性
标签: python html selenium selenium-webdriver web-scraping