2016-12-12 10 views
0

私は美しいスープを使用しており、Webページから情報を入力するよう要求しています。タイトルだけの書籍タイトルのリストを取得しようとしています。タイトルのフォントで。Pythonの正規表現は一致しますが、文字は含まれていません美しいスープ

例のテキスト= 'ジャンクタイトルの束= BOOK1よりジャンクテキストのタイトル= BOOK2'

私は

ですtitleList = [ 'タイトル= BOOK1'、 'タイトル= BOOK2']を取得していますどのような私はtitleList = ['book1'、 'book2']

私は試してみましたが、それはタイトル=とbook1の単語を壊していますが、私はリストに単にグループ(2)を追加する方法がわかりません。

titleList = [] 

def getTitle(productUrl): 

    res = requests.get(productUrl, headers=headers) 
    res.raise_for_status() 

    soup = bs4.BeautifulSoup(res.text, 'lxml') 
    title = re.compile(r'title=[A-Za-z0-9]+') 
    findTitle = title.findall(res.text.strip()) 
    titleList.append(findTitle) 
+2

あなたが作業しているHTMLの例を投稿することができますか? – Stats4224

+0

これは本当にBeautifulSoupの質問ですか?あなたは実際に 'スープ'オブジェクトを使用しません。 – alecxe

+0

なぜあなたはbeautifulsoupを使用しているのですか? –

答えて

4

あなたの正規表現にはキャプチャグループがありません。また、findallはリストを返しますのでappendの代わりにextendを使用する必要があります(titleListをリストのリストにしない限り)。

title = re.compile(r'title=([A-Za-z0-9]+)') # note parenthesis 
findTitle = title.findall(res.text.strip()) 
titleList.extend(findTitle) # using extend and not append 

スタンドアロン例:キャプチャグループとre.findallを使用して

import re 

titleList = [] 
text = 'a bunch of junk title=book1 more junk text title=book2' 

title = re.compile(r'title=([A-Za-z0-9]+)') 
findTitle = title.findall(text.strip()) 
titleList.extend(findTitle) 
print(titleList) 
>> ['book1', 'book2'] 
+0

ありがとう、私はすべての私の検索の私は、キャプチャグループを追加するだけで、拡張オプションを見つけることはなかった、私は目の第二のペアが必要でした。 – turtle02

1

はそれを行います。

>>> import re 
>>> text = 'a bunch of junk title=book1 more junk text title=book2' 
>>> re.findall(r'title=(\S+)', text) 
['book1', 'book2'] 
>>> 
関連する問題