【发布时间】:2019-11-08 03:03:24
【问题描述】:
如何在不重复输出的情况下按类名查找元素?我有两个班级要刮hdrlnk 和results-price。我写的代码是这样的:
x = driver.find_elements_by_class_name(['hdrlnk','result-price'])
它给了我一些错误。我尝试了另一个代码,这里是:
x = driver.find_elements_by_class_name('hdrlnk'),
y = driver.find_elements_by_class_name('result-price')
for xs in x:
for ys in y:
print(xs.text + ys.text)
但是我得到了这样的结果
sony 5 disc cd changer$40
sony 5 disc cd changer$70
sony 5 disc cd changer$70
sony 5 disc cd changer$190
sony 5 disc cd changer$190
sony 5 disc cd changer$190
sony 5 disc cd changer$190
sony 5 disc cd changer$10
我试图抓取的 HTML 结构部分
<p class="result-info">
<span class="icon icon-star" role="button" title="save this post in your favorites list">
<span class="screen-reader-text">favorite this post</span>
</span>
<time class="result-date" datetime="2019-11-07 18:20" title="Thu 07 Nov 06:20:56 PM">Nov 7</time>
<a href="https://vancouver.craigslist.org/rch/ele/d/chandeliers/7015824686.html" data-id="7015824686" class="result-title hdrlnk">CHANDELIERS</a>
<span class="result-meta">
<span class="result-price">$800</span>
<span class="result-hood"> (Richmond)</span>
<span class="result-tags">
<span class="pictag">pic</span>
</span>
<span class="banish icon icon-trash" role="button">
<span class="screen-reader-text">hide this posting</span>
</span>
<span class="unbanish icon icon-trash red" role="button" aria-hidden="true"></span>
<a href="#" class="restore-link">
<span class="restore-narrow-text">restore</span>
<span class="restore-wide-text">restore this posting</span>
</a>
</span>
</p>
第一个元素是重复的,但我得到了第二个元素的正确值。如何更正此错误?
【问题讨论】:
-
你能添加你试图抓取的 HTML 代码吗?
-
好的,请稍等
-
HTML 中是否有许多
<p class="result-info">元素?它们每个都包含一个hdrlnk和一个result-price? -
是的,先生。你是对的@Code-Apprentice
-
@Vince 在下面我的回答中查看两个选项。
标签: python python-3.x selenium-webdriver web-scraping