2017-08-18 14 views
0

私は現時点で個人的なプロジェクトに取り組んでいて、何か問題があった。特定の文字列で始まるすべての 'name'要素を見つけるにはどうすればよいですか?

私は美しいスープを使用して、ウェブページからユーザーの回答を掻き集めています。私は具体的に彼らのポストのdownvotesとupvotesの数をこすりたいと思いますが、私は正常にそうすることができませんでした。

以下は、ユーザーの投稿のアップホーリストの数を含むHTMLです。各ユーザは、name要素IDが171119643と表示されているので、どのようにすべてのname要素をスクラップすることができるのか混乱しています。

<strong id="cmt_o_cnt_171119643" name="cmt_o_cnt_171119643">756</strong> 

各文字列が同じ文字列で始まることに気付きました:cmt_o_cnt_。下のコードを使用して、その文字列で始まる要素をスクラップする方法はありますか?

for url in soup.find_all('strong', name_=''): 

答えて

1

非正規表現ソリューションは、サブ"cmt_o_cnt_"tag['name']であるかどうかを確認するために、次のようになります。

for tag in soup.find_all('strong'): 
    if "cmt_o_cnt_" in tag['name']: 
     print(tag['name']) # or do your stuff 
+0

こんにちは、応答に感謝のいくつかの使用状況を確認することができます。あなたのコードの「名前」部分が意味することを明確にすることができますか?私はそこに何を挿入すべきですか? – jrmymj

+0

私は助けてうれしい!何も挿入する必要はありません、それはまさにそれに似ています。 'tag ['name']'は 'tag'の' name'属性にアクセスする方法です。 –

0

CSSセレクタを使用することにより、あなたは名前の要素をこすりすることができます。

from bs4 import BeautifulSoup 
html = ''' 
    <strong id="cmt_o_cnt_171119643" name="cmt_o_cnt_171119643">756</strong> 
    <strong id="cmt_o_cnt_171119644" name="cmt_o_cnt_171119644">256</strong> 
    <strong id="cmt_o_cnt_171119645" name="cmt_o_cnt_171119645">123</strong> 
''' 
soup = BeautifulSoup(html,"lxml") 
for tag in soup.select('strong[name*="cmt_o_cnt_"]'): 
    print(tag['name']) 

あなたはCSSセレクタhere

関連する問題