[python] BeautifulSoup에서 xpath를 사용할 수 있습니까?



2 Answers

Beautiful Soup에는 XPath 지원이 없음을 확인할 수 있습니다.

Question

나는 BeautifulSoup을 사용하여 URL을 다 쳤고 다음 코드를 가졌다.

import urllib
import urllib2
from BeautifulSoup import BeautifulSoup

url =  "http://www.example.com/servlet/av/ResultTemplate=AVResult.html"
req = urllib2.Request(url)
response = urllib2.urlopen(req)
the_page = response.read()
soup = BeautifulSoup(the_page)
soup.findAll('td',attrs={'class':'empformbody'})

이제 위의 코드에서 findAll 을 사용하여 관련 태그와 정보를 얻을 수 있지만 xpath를 사용하려고합니다. BeautifulSoup에서 xpath를 사용할 수 있습니까? 가능한 경우 더 도움이 될 수 있도록 예제 코드를 제공해 주실 수 있습니까?




이것은 꽤 오래된 스레드이지만, 지금은 해결 방법이 있습니다. 이것은 현재 BeautifulSoup에 없을 수도 있습니다.

다음은 내가 한 일의 예입니다. "요청"모듈을 사용하여 RSS 피드를 읽고 "rss_text"라는 변수에 텍스트 콘텐츠를 가져옵니다. 그것으로 BeautifulSoup을 실행하고 xpath / rss / channel / title을 검색하고 그 내용을 검색합니다. 그 모든 영광 (XPath는 와일드 카드, 다중 경로 등)에서 정확히 XPath가 아니지만 원하는 기본 경로가 있으면이 방법이 유용합니다.

from bs4 import BeautifulSoup
rss_obj = BeautifulSoup(rss_text, 'xml')
cls.title = rss_obj.rss.channel.title.get_text()



BeautifulSoup에는 현재 요소가 지시하는 childern의 findNext 라는 함수가 있습니다.

father.findNext('div',{'class':'class_value'}).findNext('div',{'id':'id_value'}).findAll('a') 

위의 코드는 다음 xpath를 모방 할 수 있습니다.

div[class=class_value]/div[id=id_value]



Related