source

아름다운 수프와 아이디로 디바와 내용물을 추출

gigabyte 2022. 9. 11. 17:25
반응형

아름다운 수프와 아이디로 디바와 내용물을 추출

soup.find("tagName", { "id" : "articlebody" })

왜 이 명령어가 반환되지 않는 거죠?<div id="articlebody"> ... </div>태그나 뭐 그런 거?아무것도 반환되지 않습니다.그리고 난 그게 존재한다는 걸 알아 왜냐면 내가 그걸 똑바로 쳐다보고 있기 때문이야

soup.prettify()

soup.find("div", { "id" : "articlebody" })또, 동작하지 않습니다.

(편집: BeautifulSoup이 내 페이지를 올바르게 해석하고 있지 않다는 것을 알게 되었습니다.이것은 아마도 해석하려고 하는 페이지의 형식이 SGML이나 다른 것으로 올바르게 설정되어 있지 않은 것을 의미하고 있을 것입니다.)

코드는 정상적으로 동작하기 때문에, 샘플 문서를 투고할 필요가 있습니다.

>>> import BeautifulSoup
>>> soup = BeautifulSoup.BeautifulSoup('<html><body><div id="articlebody"> ... </div></body></html')
>>> soup.find("div", {"id": "articlebody"})
<div id="articlebody"> ... </div>

찾기<div>내부<div>s도 동작합니다.

>>> soup = BeautifulSoup.BeautifulSoup('<html><body><div><div id="articlebody"> ... </div></div></body></html')
>>> soup.find("div", {"id": "articlebody"})
<div id="articlebody"> ... </div>

요소로 요소를 찾으려면id:

div = soup.find(id="articlebody")

Beautiful Soup 4는 방법으로 대부분의 CSS 셀렉터를 지원하므로 다음과 같은 셀렉터를 사용할 수 있습니다.

soup.select('#articlebody')

요소의 유형을 지정해야 하는 경우 유형 선택기를 먼저 추가할 수 있습니다.id선택기:

soup.select('div#articlebody')

.select()method는 요소의 컬렉션을 반환합니다.즉, 다음 메서드의 예시와 같은 결과를 반환합니다.

soup.find_all('div', id="articlebody")
# or
soup.find_all(id="articlebody")

단일 요소만 선택하는 경우 다음 방법을 사용할 수 있습니다.

soup.find('div', id="articlebody")
# or
soup.find(id="articlebody")

div 태그가 너무 중첩되어 있으면 문제가 있다고 생각합니다.Facebook html 파일에서 연락처를 해석하려고 하는데, Beautifulsoup이 클래스 "fcontent"의 태그 "div"를 찾을 수 없습니다.

이것은 다른 수업에서도 일어난다.일반적으로 div를 검색할 때 많이 중첩되지 않은 것만 변환됩니다.

html 소스코드는 친구(친구)가 아닌 친구 목록의 페이스북 페이지일 수 있습니다.누군가 시험해보고 조언을 해주시면 감사하겠습니다.

이 코드는 클래스 "fontent"로 태그 "div"의 개수를 인쇄하려고 하는 코드입니다.

from BeautifulSoup import BeautifulSoup 
f = open('/Users/myUserName/Desktop/contacts.html')
soup = BeautifulSoup(f) 
list = soup.findAll('div', attrs={'class':'fcontent'})
print len(list)

디폴트의 beautifulsoup 파서에 문제가 있는 것이 원인이라고 생각됩니다.'lxml'과 같은 다른 파서를 변경한 후 다시 시도하십시오.

beautifulsoup 소스에서 이 행은 divs를 divs 내에 중첩할 수 있도록 허용하기 때문에 lukas의 코멘트에 대한 당신의 우려는 유효하지 않습니다.

NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']

필요한 것은 다음과 같이 원하는 특성을 지정하는 것입니다.

source.find('div', attrs={'id':'articlebody'})

해보셨습니까soup.findAll("div", {"id": "articlebody"})?

미친 소리 같지만 야생에서 물건을 긁어내려면 여러 개의 div를 배제할 수 없어

사용:

soup.findAll('tag', attrs={'attrname':"attrvalue"})

find/findall 구문처럼 태그와 속성 목록 사이에 다른 옵션 파라미터가 없는 한 이 값은 다르지 않습니다.

여기 코드 조각이 있습니다.

soup = BeautifulSoup(:"index.html")
titleList = soup.findAll('title')
divList = soup.findAll('div', attrs={ "class" : "article story"})

보시다시피 모든 태그를 찾은 다음 class="article"이 포함된 모든 태그를 찾습니다.

구글을 긁어모으던 중 나도 그런 일이 있었다.
나는 결국 피쿼리를 사용하게 되었다.
★★★★★★★★★★★★★★★★★★:

pip install pyquery

용도:

from pyquery import PyQuery    
pq = PyQuery('<html><body><div id="articlebody"> ... </div></body></html')
tag = pq('div#articlebody')

Id속성은 항상 고유하게 식별됩니다. 요소를 하지 않고 할 수 .따라서 요소에 내용을 구문 분석할 수 있는 기능이 있는 경우 이 기능은 플러스 포인트입니다.

divEle = soup.find(id = "articlebody")
from bs4 import BeautifulSoup
from requests_html import HTMLSession

url = 'your_url'
session = HTMLSession()
resp = session.get(url)

# if element with id "articlebody" is dynamic, else need not to render
resp.html.render()

soup = bs(resp.html.html, "lxml")
soup.find("div", {"id": "articlebody"})
soup.find("tagName",attrs={ "id" : "articlebody" })

언급URL : https://stackoverflow.com/questions/2136267/beautiful-soup-and-extracting-a-div-and-its-contents-by-id

반응형