2017-12-28 20 views
0

は、それはそうPythonとBeautifulSoup HTMLでテキスト文字列を検索するには

def checkString(): 
    url_a = 'https://launchstudio.bluetooth.com/ListingDetails/50756' 
    r_a = requests.get(url_a) 
    soup_a = BeautifulSoup(r_a.text) 

    for blem in soup_a(text=re.compile(r'RFCOMM')): 
     return True 

    return False 

は私soup_aは、URLのビュー・ソースと同じであることを確認したkeywoardのための特定のウェブページをチェックし、以下の機能を持っていますが、私の検索では頭のタグの中に含まれている結果だけが返され、なぜその理由が分かりません。助言がありますか?

Pythonのバージョンは2.7.5

+0

ページのソースではない、例えば、一つとして 'RFCOMM'文字列を示しています「RF通信」または「RF 通信」? – 9000

答えて

2

あなたはBeautifulSoupクラスにlxmlを渡す必要があります。また、return Trueは、一致が見つかるとfor-loopから抜け出します。したがって、実際にヘッドタグにRFCOMMが見つかった場合、ループは終了し、これ以上の一致は登録されません。リストの内包表記を使用する方がよいと任意の一致が見つかったかどうかを調べることがあります。

from bs4 import BeautifulSoup as soup 
import urllib.request as urllib 
import re 
def checkString(): 
    url_a = 'https://launchstudio.bluetooth.com/ListingDetails/50756' 
    s = soup(str(urllib.urlopen(url_a).read()), 'lxml') 
    return bool([i for i in s(text=re.compile(r'RFCOMM'))]) 

print(checkString()) 

は出力:

True 
+0

ありがとうございます - ヘッドタグ内に見つかったかどうかは気にしませんが、何らかの理由でヘッドタグの外側に何かを見つけることができません。 BeautifulSoupの引数として "html.parser"を使用することは、何らかの理由で私のためのトリックでした(lmxlのようなものでしょうか?) – lillahimmel

関連する問題