2

一日中解決しようとしている小さな問題があります。簡単だと思いますが、答えがわかりません。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>]')

上記のコードは機能しません。

4

2 に答える 2

1

正規表現には、角括弧ではなく括弧が必要だと思います。つまり、次のようになります。

l.add_xpath('producer_name', "//div[@class='info']", re=u'(Supplier|Producer):\s*(.*)\s?(</p>|<br>|</span>|</strong>)')
于 2012-10-21T17:34:10.290 に答える
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)) 
于 2012-10-21T22:28:07.953 に答える