3 回答
TA贡献1828条经验 获得超13个赞
让我们使用您提供给我们的样本。(使用此链接)
让我们看看表格行是如何格式化的。
<tr>
<td bgcolor="#7EADAD">
<strong>Membership Name: </strong>
</td>
<td>
MESSRS R J & L A ACTON
</td>
</tr>
这对我们来说很棒,我们有不同的标题和值属性:标题strong在tds内的标签内,而bgcolor值直接在它们的tds 内。
让我们看看地址信息的空行是怎样的:
<tr>
<td bgcolor="#7EADAD">
<strong> </strong>
</td>
<td>
NORTHUMBERLAND
</td>
</tr>
很好,结构一样。
这意味着tr如果需要,我们可以遍历所有s 并根据属性获取它们的数据。这是一个不处理链接的最小示例:
for tr in response.xpath('//table[@id="MemberDetails"]/tr'):
header = tr.xpath('td/strong/text()').extract()[0].strip()
value = tr.xpath('td')[1].xpath('text()').extract()[0].strip()
print(u'{} -- {}'.format(header, value))
您下一步是收集数据(制作字典?单独的列表?直接写入文件?这是您的选择。)。
为了处理地址:tr如果标头为空(假设只有地址标头为空),您可以在s循环中创建一个地址变量,该变量与该值连接。像这样(再次<最小示例):
for tr in response.xpath('//table[@id="MemberDetails"]/tr'):
address = ''
header = tr.xpath('td/strong/text()').extract()[0].strip()
value = tr.xpath('td')[1].xpath('text()').extract()[0].strip()
if not header: # empty strings evaluate to False
address += '' + value
您还必须弄清楚如何处理存储在a标签中的标头/值。
添加回答
举报