Python 用刮痕爬行网页

Python 用刮痕爬行网页,python,xpath,scrapy,Python,Xpath,Scrapy,我一直在读《刮痧》。我的python技能很弱,但我通常能够在反复试验和决心的基础上构建一些东西 我能够在我的项目站点上运行,并获取“结构化”的产品数据。 问题发生在每页具有不同行和值的表中。 在一个例子下面,我可以得到产品的名称和价格 问题在于下面的表,产品有不同的规格和不同的行数,但总是有两列。我试图通过计算来循环槽,并为每个槽获得第一个作为标签,第二个作为相应的值。然后将其和其他页面数据一起追加,以创建一个条目 最后,我想给出Name:Name,Price:Price,Label X:Val

我一直在读《刮痧》。我的python技能很弱,但我通常能够在反复试验和决心的基础上构建一些东西

我能够在我的项目站点上运行,并获取“结构化”的产品数据。 问题发生在每页具有不同行和值的表中。 在一个例子下面,我可以得到产品的名称和价格

问题在于下面的表,产品有不同的规格和不同的行数,但总是有两列。我试图通过计算
来循环槽,并为每个槽获得第一个
作为标签,第二个
作为相应的值。然后将其和其他页面数据一起追加,以创建一个条目

最后,我想给出Name:Name,Price:Price,Label X:Value X,Label y:Value y

<div>name</div>
<div>price</div>

<table>
    <tr><td>LABEL X</td><td>VALUE X</td></tr>
    <tr><td>LABEL Y</td><td>VALUE Y</td></tr>
    <tr><td>LABEL Z</td><td>VALUE Z</td></tr>

    Could be anywhere from 2 to 6 rows

</table>
名称
价格
标签xx值X
标签Y值Y
标签Z值Z
可以是2到6行的任意位置
如果有人能给我举个例子,我将不胜感激

编辑>>>

HTML代码

<table class="table table-striped">                     
    <tbody>
        <tr>
            <td><b>Name:</b></td>
            <td>Car</td>
        </tr>                           
        <tr>
            <td><b>Brand:</b></td>
            <td itemprop="brand">Merc</td>
        </tr>
        <tr>
            <td><b>Size:</b></td>
            <td>30 XL</td>
        </tr>
        <tr>
            <td><b>Color:</b></td>
            <td>white</td>
        </tr>
        <tr>
            <td><b>Stock</b></td>
            <td>20</td>
        </tr>
    </tbody>
</table> 

姓名:
汽车
品牌:
美塞苔丝
尺寸:
30 XL
颜色:
白色
股票
20

你应该发布一些零碎的代码来帮助我们

无论如何,这里是你可以用来解析HTML的代码

for row in response.css('table > tr'):

    data = {}
    data['name'] = row.css("td:nth-child(1) b::text").extract()[0]
    data['value'] = row.css("td:nth-child(2)::text").extract()[0]

    yield MyItem(name = data['name'], value = data['value'])
PS: 不要在XPath上的选择器中使用
tbody
tbody
是由现代浏览器添加的,它不包含在原始响应中

请看这里:

Firefox尤其以向表中添加元素而闻名。另一方面,Scrapy不会修改原始页面HTML,因此如果使用
你能包括一个链接到你正在爬行的页面,以及你当前的剪贴代码吗?