使用scrapy从表中删除数据。表格html如下:
<table class="tablehd">
<tr class="colhead">
<td width="170">MON, NOV 11</td>
<td width="80">Item</td>
<td width="60" align="center"></td>
<td width="210">Item</td>
<td width="220">Item</td>
</tr>
<tr class="oddrow">
<td> Item </a></td>
<td> Item </td>
<td align="center"> Item </td>
<td></td>
<td> Item </td>
</tr>
<tr class="evenrow">
<td> Item </a></td>
<td> Item </td>
<td align="center"> Item </td>
<td></td>
<td> Item </td>
</tr>
</table>
可以使用整个列表
items = hxs.select('//table[@class="tablehd"]//td//text()').extract()
如何将它们拆分为每个项目然后分配数据td1-td5ta
答案 0 :(得分:10)
不确定您希望在您的商品中看到什么,但这是一个示例,我希望就是这样:
class MyItem(Item):
value = Field()
class MySpider(BaseSpider):
...
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = hxs.select('//table[@class="tablehd"]/td')
for item in items:
my_item = MyItem()
my_item['value'] = item.select('.//text()').extract()
yield my_item
希望有所帮助。
答案 1 :(得分:0)
当你说“将它们拆分为每个项目”时,你的意思是每个课程/行吗?
无论如何,我这样做只是使用正则表达式。
import urllib, re
html=urllib.urlopen('domain.com')
itemfinder=re.compile('td>(.*)</td>')
items=re.findall(itemfinder, html)
如果你想按行拆分,那么:
rowfinder=('tr', re.Multiline)
rows=re.findall(rowfinder, html)
for row in rows:
...code above except substitute variables apropos