2017-11-27 1 views
0

bs4를 사용하여 제품의 세부 정보를 얻기 위해 bs4를 사용하여 정보를 얻으려는 중이므로 this 예를 들어 코드를 사용하여 결과를 얻으려고합니다. 느낌은 다음과 가장 정확하다 :아름다운 스프 스프레드 테이블 내

from urllib.request import urlopen as uReq 
from bs4 import BeautifulSoup as soup 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 
page_soup = soup(page_html, 'html.parser') 
attributes = page_soup.findAll("div",{'class':'itemAttr'}) 
attribute = attributes [0] 
row = attribute.tr.contents 

아이디어의 존재, 해당 사업부 (itemattr를) 구문 분석, 웹 페이지를 당겨, 여기의 거기 TR/TD 태그 또는 조합을 사용하여 컨텐츠를 끌어 시도합니다. 위에 포함되지 않은 것은 여러 가지 변형 된 작업이지만,이 목록을 생성하는 구문 분석의이로드 블록을 발견하고이 목록을 통한 탐색은로드 블록을 충족합니다. 나는 테이블을 파싱하는 것을 직접 보았지만 불행하게도 클래스를 부여하지는 않았다. div 태그에서 테이블을 가져 오는 방법에 대한 아이디어가 있는지, 아니면 구문 분석에서 html의 새 하위 집합을 만들 것인지 궁금합니다 (목록과 대조적으로?). 또는 제 정신이 나갔다가 잠자리에 들지 않으면 알려주십시오.

답변

2

나는 당신의 현재 일이 많은 감각과 좋은 직장을 만든다고 생각합니다!

앞으로 진행하기 위해 이베이 페이지에서 td 요소의 구조와 특정 데이터를 추출하기 위해 머리글에 attrLabels 클래스를 사용하여 두 부품을 사용할 수 있습니다.

이 페이지에 나타나는 이렇게하면 동일한 순서로 데이터를 제공합니다

tds = attribute.findAll("td") 
ordered_data = [] 
for i in range(0, len(tds), 2): 
    if tds[i].get('class') == ['attrLabels']: 
     key = tds[i].text.strip().strip(":") 
     value = tds[i+1].span.text 
     ordered_data.append({ key: value }) 

을 그리고 이것은 당신에게 같은 일을 제공하지만, 키와 값의 페어로 DICT에 쉽게 각 액세스 할 수 있도록 속성 :

tds = attribute.findAll("td") 
searchable_data = {} 
for i in range(0, len(tds), 2): 
    if tds[i].get('class') == ['attrLabels']: 
     key = tds[i].text.strip().strip(":") 
     value = tds[i+1].span.text 
     searchable_data[key] = value 
+1

당신은 위대한 신사입니다. 나는 그것을 끊기 위해 이것을 깨뜨리고 다시 깨뜨릴 것입니다. 무리 감사! –

관련 문제