我有一点问题,我想整天解决。我觉得这很简单,但我无法弄清楚答案。我使用Python编写的 scrapy 。我需要从一些div内容中解析生产者名称。
div的方案是:
<div id=info>...
<html tag, can be p,strong,span,etc>
Producer(sometimes as Supplier): some code
</end tag>...
</div>
我使用下一个代码:
l.add_xpath('producer_name', "//div[@class='info']", re=u'Producer:\s*(.*)\s?</p>')
一切正常,直到找到“供应商”而不是“生产者”或不同结束标记的页面。
所以我尝试了类似的东西:
l.add_xpath('producer_name', "//div[@class='info']", re=u'[Supplier|Producer]:\s*(.*)\s?[</p>|<br>|</span>|</strong>]')
上述代码不起作用。
答案 0 :(得分:1)
我相信你的正则表达式中需要括号而不是方括号,即:
l.add_xpath('producer_name', "//div[@class='info']", re=u'(Supplier|Producer):\s*(.*)\s?(</p>|<br>|</span>|</strong>)')
答案 1 :(得分:0)
所以,我想出了我的问题。我决定这样做:
sudo apt-get install python-django
from django.utils.html import strip_tags
producer_name_in = MapCompose(strip_tags,remove_entities)
desc = hxs.select("//div[@class='desc']").extract()[0]
producer_name = re.search(u'(Producer|Supplier):(.*?)(<br>|</p>|</span>)', desc)
if producer_name:
l.add_value('producer_name', producer_name.group(2))