我正在尝试解析此 HTML。
<table id="ctl00_LeftColumnMiddle_Table1" border="0">
<tbody>
<tr>
<td>
<table border="0">
<tbody>
<tr>
<td >Contractor Name</td><td>UNITED RENTALS HIGHWAY TECHNOLOGIES INC</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td><table border="0">
<tbody>
<tr>
<td >Contractor Name</td><td>UNITED RENTALS NORTHWEST INC</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
它在#ctl00_LeftColumnMiddle_Table1
中有多个TR,并且每个tr
内都有一个table
我想处理每条记录(实际上是一条TR),然后处理每条记录的详细信息。
我尝试过这些选择器/Xpath。
Selector(response).xpath('//*[@id="ctl00_LeftColumnMiddle_Table1"]/tbody/tr')
和
Selector(response).css('#ctl00_LeftColumnMiddle_Table1 > tbody >tr')
但这不会返回任何结果。
但如果我这样做
Selector(response).css('#ctl00_LeftColumnMiddle_Table1 tr')
但是这个表达式也选择带有Contractor Name
的内部tr
。
这是 Scrapy 中的错误吗?
如果是,还有其他方法可以按照我想要的方式处理记录吗?
最佳答案
我用它做到了
Selector(response).xpath('//*[@id="ctl00_LeftColumnMiddle_Table1"]/tr')
或
Selector(response).css('#ctl00_LeftColumnMiddle_Table1 > tr')
这是因为tbody
是Firefox、Chrome等浏览器自动添加的标签。
但是当使用 Scrapy 进行抓取时,tbody
并不存在于 response
HTML 中。
关于python - Scrapy不处理Xpath和CSS选择器中的TBODY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42227347/