1

次のようなものから(スクレイピーで)抽出するにはどうすればよいですimage_1.pngか:

<html><body>
<style type="text/css">
img.article_image[class] 
{
    background-image:url('/article_images/image_1.png');
}
</style>    
<img class="article_image">
</body></html>

私の頭に浮かぶ唯一のアイデアは、ソースのhtmlコードを正規表現することです.もっとエレガントなものはありますか?

4

2 に答える 2

2

アイテム ローダーは優れたツールで、xpath と正規表現が組み込まれています。

XPathItemLoader(response).get_xpath(xpath, regex)

http://doc.scrapy.org/en/latest/topics/loaders.html

>>> from scrapy.contrib.loader import XPathItemLoader
>>> response.body
'<html><body>\n<style type="text/css">\nimg.article_image[class] \n{\n...'
>>> from scrapy.contrib.loader import XPathItemLoader
>>> xl = XPathItemLoader(response=response, item={'image': ''})
>>> xl
<scrapy.contrib.loader.XPathItemLoader object at 0x7f5830079f50>
>>> xl.get_xpath('//style', re=r"background-image.*/([^/]+)'")
[u'image_1.png']
>>> xl.add_xpath('image', '//style', re=r"background-image.*/([^/]+)'")
>>> xl.load_item()
{'image': [u'image_1.png']}
于 2012-07-02T18:55:43.493 に答える
1

xpath クエリを使用して css を見つけることはできますが、正規表現を使用してそこから画像パスを抽出する必要があります。

したがって、ここでは全身で正規表現を使用するのが良い解決策だと思います。

于 2012-07-02T17:56:11.207 に答える