뷰티풀 수프는 웹 페이지를 파싱하고 구조화된 표현을 만드는 데 훌륭한 도서관이다. 그것은 당신이 페이지 유형, ID 또는 그것의 속성별로 페이지의 어떤 요소에도 접근할 수 있게 하고, 그것의 내용에 대한 문자열 표현을 얻을 수 있다. Beautiful Soup은 또한 고장난 HTML이 있는 웹 페이지에 매우 관대하여, 웹 사이트에서 데이터 세트를 생성할 때 유용하다.


Beautiful Soup은 http://crummy.com/software/BeautifulSoup에서 다운로드할 수 있다. 단일 Python 파일로 제공되며, Python 라이브러리 경로 또는 작업 중인 경로에 Python 인터프리터를 시작할 수 있다.


Beautiful Soup을 설치하면 다음과 같은 내용을 번역기에서 확인할 수 있다.


>> import urllib2

>> from BeautifulSoup import BeautifulSoup

>> c=urllib2.urlopen('http://kiwitobes.com/wiki/Programming_language.html')

>> soup=BeautifulSoup(c.read( ))

>> links=soup('a')

>> links[10]

<a href="/wiki/Algorithm.html" title="Algorithm">algorithms</a>

>> links[10]['href']

u'/wiki/Algorithm.html'



웹 페이지를 나타내는 뷰티풀 스쿱의 방식인 수프를 구성하려면 페이지 내용을 사용하여 수프를 초기화하십시오. a와 같은 태그 타입으로 수프를 부를 수 있으며, 그 타입의 오브젝트 리스트를 반환한다. 이러한 각 항목은 또한 주소 지정 가능하므로 계층에서 속성 및 그 아래의 다른 개체를 드릴다운할 수 있음


Zebo 결과 스크래핑

Zebo의 검색 페이지 구조는 상당히 복잡하지만, 그들 모두가 bgverdanasmall 등급이 있기 때문에 페이지의 어느 부분이 항목의 목록인지 쉽게 알 수 있다. 당신은 이것을 이용하여 페이지에서 중요한 데이터를 추출할 수 있다. downloadzebodata.py이라는 새 파일을 생성하고 다음 코드를 삽입하십시오.


from BeautifulSoup import BeautifulSoup

import urllib2

import re

chare=re.compile(r'[!-\.&]')

itemowners={}

# Words to remove

dropwords=['a','new','some','more','my','own','the','many','other','another']

currentuser=0

for i in range(1,51):

 # URL for the want search page

 c=urllib2.urlopen(

 'http://member.zebo.com/Main?event_key=USERSEARCH&wiowiw=wiw&keyword=car&page=%d'

 % (i))

 soup=BeautifulSoup(c.read( ))

 for td in soup('td'):

 # Find table cells of bgverdanasmall class

 if ('class' in dict(td.attrs) and td['class']=='bgverdanasmall'):

 items=[re.sub(chare,'',a.contents[0].lower()).strip( ) for a in td('a')]

 for item in items:

 # Remove extra words

 txt=' '.join([t for t in item.split(' ') if t not in dropwords])

 if len(txt)<2: continue

 itemowners.setdefault(txt,{})

 itemowners[txt][currentuser]=1

 currentuser+=1


이 코드는 Zebo에서 "원하는" 검색의 처음 50페이지를 다운로드하여 구문 분석할 것이다. 모든 항목이 자유 텍스트로 입력되기 때문에, "a"와 "some"과 같은 단어를 삭제하고, 구두점을 없애고, 모든 것을 소문자로 만드는 등, 상당한 양의 정리가 이루어져야 한다.


이 작업이 완료되면 코드는 우선 5명 이상이 원하는 항목 목록을 작성하고, 익명화된 사용자를 열과 행으로 하여 매트릭스를 작성해야 하며, 마지막으로 매트릭스를 파일에 기록해야 한다. 이것을 다운로즈보다타 끝에 추가한다.피:


out=file('zebo.txt','w')

out.write('Item')

for user in range(0,currentuser): out.write('\tU%d' % user)

out.write('\n')

for item,owners in itemowners.items( ):

 if len(owners)>10:

 out.write(item)

 for user in range(0,currentuser):

 if user in owners: out.write('\t1')

 else: out.write('\t0')

 out.write('\n')


명령줄에서 다음을 실행하여 얼룩이라는 파일을 생성하십시오.txt, 블로그 데이터 세트와 동일한 형식. 단 하나의 차이점은 계산하는 대신, 한 사람이 특정 항목을 원하는 경우 1이 있고, 그렇지 않은 경우 0이 있다는 것이다.


c:\code\cluster>python downloadzebodata.py

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기