2017-07-17 58 views
0

class属性にいくつかの異なる値のうちの1つがある場合、 'td'タグのすべての出現を取得しようとしています。SoupStrainerとBeautifulSoupで複数の属性を持つすべてのタグを取得する

私はBeautifulSoupでこれを行う方法を知っていますが、実際には時間がかかるため、SoupStrainerで各ページを選択的に解析することでスピードアップしようとしています。私はまず以下を試しましたが、うまくいかないようです。

strainer = SoupStrainer('td', attrs={'class': ['Value_One', 'Value_Two']}) 
soup = BeautifulSoup(foo.content, "lxml", parse_only=strainer) 

誰もがこの作業を行う方法を知っていますか(それはSoupStrainerまたは美しいスープを含む必要はありません)?

+0

'なし、全ての ''​​タグを見つける必要がありますか? – davedwards

+0

はい、わかっています。しかし、私はドキュメントの一部(いくつかのクラス属性値を持つtdタグ)を解析しようとしています。あなたの答えは全体を解析してからtdタグを選択します。私は1つのステップでそれを結合したい。 – Hobbit36

答えて

0

もちろん、あなたが何を意味するかによっては、ここで使用されているようなxp​​ath式を作成する能力を与えるscrapyを使用することができます。 2つの属性が似ているという事実を利用しています。選択を行う他の多くの方法が利用可能です。その後、 `スープ= BeautifulSoup(urllib2.urlopen(URL)、 'lxmlの`)'、 `soup.find_all( 'TD'))と

>>> from scrapy.selector import Selector 
>>> selector = Selector(text=open('temp.htm').read()) 
>>> selector.xpath('.//td[contains(@class,"Value")]/text()').extract() 
['value one', 'value two'] 
関連する問題