尝试点击可以随机复制到页面上其他位置的链接,以便根据该表中的其他内容缩小范围。
soup = BeautifulSoup(Driver.page_source, "html5lib")
for EachTable in soup.find_all("tr"):
if data_check in EachTable.get_text():
links = Driver.find_elements_by_xpath("span[contains(.,'%s')]" % data_to_check)
我的XPath并不好。我知道// span等...会定位该页面上的所有内容并且有效,但是如果有重复内容我需要将其缩小到EveryTable的那一部分。
我试过了:
links = EachTable.find_elements_by_xpath("span[contains(.,'%s')]" % data_to_check)
但这是一个很长的镜头,显然它并不支持find_elements_by_xpath。
因此,如果我可以缩小它并且data_to_check在EachTable中,则可以通过这种方式将我的Xpath限制到该表,或者我是否必须更改整个Xpath以查看完整表以查看它是否包含data_to_check ?
是否可以像这样做Xpath?
links = Driver.find_elements_by_xpath("//tr[contains(.,'%s')]" % tr_data and //span[contains(.,'%s')]" % span_data)
我不确定语法,但会得到相同的结果,可能效率更高。
答案 0 :(得分:1)
//tr[contains(.,'%s')]" % tr_data and //span[contains(.,'%s')]" % span_data)
应该是这样的:
"//tr[contains(.,'%s')]//span[contains(.,'%s')]" % (tr_data,span_data)
这将使用tr_data查找tr内的span_data的所有范围。