我正在抓一个具有以下结构的网站:
<tbody>
<tr class='Leaguestitle'>
<td>...<\td>
<td>...<\td>
<\tr>
<tr id='tr1_abababa'>
<td>...<\td>
<td>...<\td>
<\tr>
<tr id='tr2_abababa'>..<\tr>
.
.
<tr id='tr1_acacaca'>..<\tr>
<tr id='tr2_acacaca'>..<\tr>
<tr align='center'>..<\tr>
.
.
<tr id='tr1_cbcbcbc'>..<\tr>
<tr id='tr2_cbcbcbc'>--<\tr>
<\tbody>
我想要的是循环遍历所有tr的类,并且所有tr都使用其id中的tr1,直到我到达具有对齐中心的节点,当我停止查询时。为此,我尝试使用以下xpath:
allrows=table.find_elements_by_xpath(
'.//tr[@class="Leaguestitle"] | .//tr[contains(@id,"tr1")] | .//tr[@align="center"]')
我对每个节点进行分类的想法是这样的:
for row in allrows:
try:
if 'Leaguestitle' in row.get_attribute('class'): something
except:pass
try:
if 'tr1' in row.get_attribute('id'): something else
except:pass
try:
if 'center' in row.get_attribute('align'): break
except:pass
问题是,我得到的节点不是结构
<tr attributes>
<td>...<\td>
<td>...<\td>
<\tr>
但直接所有的儿童标签。为了尝试解决它,我做到了
for row in allrows:
row=row.find_element_by_xpath('..')
那,当打印给我整个父标签,但我仍然无法使用我的分类代码,因为get_attribute返回空结果。
缺什么?
请尝试以下方法:
allrows = table.find_elements_by_xpath("//tr[@class='Leaguestitle' or contains(@id,'tr1') and not (@align='center')]")