2017-12-28 9 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에 대한 특정 웹 페이지를 확인하여 다음과 같은 기능을 가지고 있지만, 내 검색은 헤드 태그 내에 포함 된 결과 만 반환하고 이유를 파악하는 데 어려움이 있습니다. 어떤 제안?

파이썬 버전은 2.7.5

+0

페이지 소스는 하나로서'RFCOMM' 문자열을 표시하지 예를 들어 않는다 'RF 통신'또는 'RF COMM'? – 9000

답변

2

당신은 BeautifulSoup 클래스에 lxml을 통과해야합니다. 또한 일치가 발견되면 return True은 for 루프를 벗어납니다. 따라서 헤드 태그에 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