我有一种情况,我有很多<b>
标签:
<b>12</b>
<b>13</b>
<b>14</b>
<b></b>
<b>121</b>
如您所见,最后的第二个标记是空的。当我打电话时:
sel.xpath('b/text()').extract()
这给了我:
['12', '13', '14', '121']
我想要:
['12', '13', '14', '', '121']
有没有办法得到空值?
我目前的工作是打电话给:
sel.xpath('b').extract()
然后自己分析每个HTML标记(空标记在这里,这是我想要的)。
最佳答案
在这里可以手动删除标签并获取文本。您可以使用remove_tags()
提供的功能:
>>> from w3lib.html import remove_tags
>>> map(remove_tags, sel.xpath('//b').extract())
[u'12', u'13', u'14', u'', u'121']
请注意,
w3lib
是一个w3lib
并且在内部使用。无需单独安装。此外,最好在这里使用Scrapy dependency。继续使用
Scrapy
并定义输入处理器。例如,您可以为sel.xpath('b')
类的特定Field
s定义它:from scrapy.contrib.loader.processor import MapCompose
from scrapy.item import Item, Field
from w3lib.html import remove_tags
class MyItem(Item):
my_field = Field(input_processor=MapCompose(remove_tags))