3 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超13個贊
讓我們使用您提供給我們的樣本。(使用此鏈接)
讓我們看看表格行是如何格式化的。
<tr>
<td bgcolor="#7EADAD">
<strong>Membership Name: </strong>
</td>
<td>
MESSRS R J & L A ACTON
</td>
</tr>
這對我們來說很棒,我們有不同的標(biāo)題和值屬性:標(biāo)題strong在tds內(nèi)的標(biāo)簽內(nèi),而bgcolor值直接在它們的tds 內(nèi)。
讓我們看看地址信息的空行是怎樣的:
<tr>
<td bgcolor="#7EADAD">
<strong> </strong>
</td>
<td>
NORTHUMBERLAND
</td>
</tr>
很好,結(jié)構(gòu)一樣。
這意味著tr如果需要,我們可以遍歷所有s 并根據(jù)屬性獲取它們的數(shù)據(jù)。這是一個不處理鏈接的最小示例:
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))
您下一步是收集數(shù)據(jù)(制作字典?單獨的列表?直接寫入文件?這是您的選擇。)。
為了處理地址:tr如果標(biāo)頭為空(假設(shè)只有地址標(biāo)頭為空),您可以在s循環(huán)中創(chuàng)建一個地址變量,該變量與該值連接。像這樣(再次<最小示例):
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標(biāo)簽中的標(biāo)頭/值。
添加回答
舉報