使用正则表达式从字符串中删除单词

时间:2014-05-05 13:29:23

标签: python html regex web-scraping scrapy

我使用Scrapy抓取网站,其上有产品清单。我想要做的是使用正则表达式从产品标题字符串中删除不需要的单词。我想删除2个不同的重复单词:石墨铅笔,仅清除品牌名称。

有什么建议吗?

<a name=“this-link”> href=“some url here”>Pen Bic Crystal</a>

some divs and other DOM structure

<a name=“this-link”> href=“some url here”>Graphite Pencil Kohinoor Carpenter</a>

some divs and other DOM structure

<a name=“this-link”> href=“some url here”>Pen Parker Jotter</a>

some divs and other DOM structure

<a name=“this-link”> href=“some url here”>Pen Bic Other Model</a>

some divs and other DOM structure

<a name=“this-link”> href=“some url here”>Graphite Pencil Palomino Blackwing Pearl</a>

1 个答案:

答案 0 :(得分:4)

Scrapy选择器内置support for regular expressions

获取链接文本后致电re()

sel.xpath('//a/text()').re(r'(?:Pen|Graphite Pencil)\s(.*)')

其中:

UPD:

如果您想在PenGraphite Pencil之后只获取以下字词,请使用此正则表达式:r'(?:Pen|Graphite Pencil)\s(\w+),其中只有字母数字(和_)字符集在PenGraphite Pencil和空格后捕获。

使用scrapy shell进行演示:

$ scrapy shell index.html
>>> sel.xpath('//a/text()').re(r'(?:Pen|Graphite Pencil)\s(\w+)')
[u'Bic', u'Kohinoor', u'Parker', u'Bic', u'Palomino']