【发布时间】:2017-12-21 18:55:39
【问题描述】:
我的 Python 代码只查找 HTML 的第一篇文章,因此它打印的是相同的链接。如何从 HTML 中获取所有文章标签?谢谢。
Python 代码:
links = driver.find_elements_by_tag_name("article")
for i in links:
if driver.find_element_by_xpath("//div[@class='inner-article']/a//div[@class='sold_out_tag']").get_attribute("innerHTML") == "sold out":
print("sold out")
link = ((driver.find_element_by_xpath("//div[@class='inner-article']/a").get_attribute("href")))
print(link)
else:
print("available")
time.sleep(5)
driver.quit()
HTML:
<article>
<div class="inner-article"><a style="height:81px;"
href="/shop/jackets/jly8dgwqu/w10m2pybx"><img width="81" height="81"
src="//d17ol771963kd3.cloudfront.net/139432/vi/AHP1l8fMIcA.jpg"
alt="Ahp1l8fmica"><div class="sold_out_tag">sold out</div></a></div>
</article>
<article>
<div class="inner-article"><a style="height:81px;"
href="/shop/jackets/jly8dgwqu/w10m2pybx"><img width="81" height="81"
src="//d17ol771963kd3.cloudfront.net/139432/vi/AHP1l8fMIcA.jpg"
alt="Ahp1l8fmica"><div class="sold_out_tag">sold out</div></a></div>
</article>
【问题讨论】:
-
当你说“只找到 html 的第一篇文章”时,你的输出到底是什么?
-
您能否详细说明运行代码时发生了什么?是什么阻止您从 html 中获取所有文章标签?
-
问题出在 if 语句中,您在 驱动程序 上调用
find_element代码。您需要在i上调用它并相应地修改您的 XPath -
1.无论有多少链接,我的输出都是第一个链接(参见第一个 href)。如果页面上有 50 个链接,它会打印第一个链接 50 次。
-
2.见#1。我想我得到了所有的元素,我认为 for 循环内的执行是错误的。
标签: python html selenium tags webpage