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