2014-12-12 2 views
1

webpage을 스크랩하고 접두어와 그 이름을 추출하려고합니다. 그러나 일부 태그는 추출 할 수 없으며 보이지 않는 태그가 있다고 추측합니다. 여기 내 파이썬 코드입니다 :Python으로 td HTML 태그를 추출하는 방법 BeautifulSoup?

opener.addheaders = [('User-agent', 'Mozilla/5.0')] 
response = opener.open('http://bgp.he.net/AS23028#_prefixes') 
html = response.read() 
soup = BeautifulSoup(html) 
soup_1 = soup.find("table", id = "table_prefixes4") 
soup_2 = soup_1.findAll("td") 
print soup_2 

아무도 어떻게 태그 후 이름을 얻는 아이디어가 있습니까? 다음 페이지의 HTML 콘텐츠입니다 :

<div class="flag alignright floatright"><img alt="United States" src="/images/flags/us.gif?1282328089" title="United States"/></div> 
</td>, <td class="nowrap"> 
<a href="/net/209.176.111.0/24">209.176.111.0/24</a> 
</td>, <td>Savvis 

이와 나는 HTML에서 접두사 "209.176.111.0/24"와 "새 비스"를 추출 할

+0

에 '보이지 않는'태그 같은 것은 없다. 태그가 있거나 태그가 없습니다. 태그가 보이지 않으면 세 가지 원인이있을 수 있습니다. HTML이 잘못되었으며 구문 분석기가 모든 태그를 다시 작동 시키려면 구문 분석기가 태그를 삭제해야합니다. 서버는 정확한 요청 데이터 (URL, 매개 변수 , 쿠키, 기타 HTTP 헤더) 또는 JavaScript가 브라우저에로드 된 후 HTML 트리 구조가 변경되었습니다. –

+0

@MartijnPieters 내가 말하고자하는 것은 내가 페이지를 의심 할 때 태그를 볼 수 있다는 것입니다.하지만 beautifulsoup와 구문 분석하려고하면 그 태그를 붙잡을 수 없습니다. – UserYmY

+0

이 경우 이름은 소스 *에 있습니다. 두 번째'td'에는 이름이 있습니다. –

답변

1

데이터는 바로이다; 이 페이지에는 아무 것도 없습니다. html로 손실되는 태그 (충분히) 깨진 표시되지 않으며,이 브라우저에서 페이지를 변경하는 자바 스크립트입니다 :

for row in soup.select('table#table_prefixes4 tr'): 
    print row.get_text(' - ', strip=True) 

인쇄 전체 테이블 헤더를 포함.

은 세포를 효율적으로 활용하려면 다음

for row in soup.select('table#table_prefixes4 tr'): 
    cells = row.find_all('td') 
    if not cells: 
     continue 
    print [cell.get_text(strip=True) for cell in cells] 

후자는 생산 :

>>> for row in soup.select('table#table_prefixes4 tr'): 
...  cells = row.find_all('td') 
...  if not cells: 
...   continue 
...  print [cell.get_text(strip=True) for cell in cells] 
... 
[u'38.229.0.0/16', u'PSINet, Inc.'] 
[u'38.229.0.0/19', u'PSINet, Inc.'] 
[u'38.229.32.0/19', u'PSINet, Inc.'] 
[u'38.229.64.0/19', u'PSINet, Inc.'] 
[u'38.229.128.0/17', u'PSINet, Inc.'] 
[u'38.229.252.0/22', u'PSINet, Inc.'] 
[u'68.22.187.0/24', u'AS23028.NET'] 
[u'192.138.226.0/24', u'Computer Systems Consulting Services'] 
[u'203.28.18.0/24', u'Information Technology Services'] 
[u'204.74.64.0/24', u'SAUNET'] 
[u'209.176.111.0/24', u'Savvis'] 
[u'216.90.108.0/24', u'Savvis'] 
관련 문제