python - Scrapy不处理Xpath和CSS选择器中的TBODY

标签 python css python-2.7 xpath scrapy

我正在尝试解析此 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/

相关文章:

列表理解中的 Python 语法错误?

css - @page :first { margin: . .. } 在 Chrome 错误中?

jquery - CSS 和 HTML - 如何使 div 不重叠?

python-2.7 - 木星|内核似乎已经死了。它将自动重启 |

Python 类继承没有做我认为应该做的事情

python - Mapreduce 对 txt 文件中特定列的字数进行统计

python - 如何在 Windows 7 上安装 python 2.6.8?

python - 如何通过 numpy 获得与 pandas.autocorr() 相同的结果?

html - 滚动行消失在透明背景的另一行后面

python-2.7 - 根据请求从 S3 提供文件的 AWS Lambda 函数