2012-04-01 5 views
1

내 목표는 텍스트에 특정 단어가 들어있는 태그를 격리하고 텍스트 파일에만 인쇄되도록하는 것입니다.BeauitfulSoup로 텍스트를 추출한 후 추출한 데이터로 무엇을 할 수 있습니까?

지금까지 태그를 추출하여 텍스트 파일로 인쇄 할 수있었습니다.

내 질문에 일단 추출한 텍스트가 모두있는 경우 어떻게해야합니까? 특정 단어를 분리하고 텍스트를 필요한만큼만 트리밍 할 수있는 방법을 찾는 데 어려움을 겪고 있습니다. 나에게 반환됩니다 무엇

import urllib2 
from BeautifulSoup import BeautifulSoup 

url = 'http://www.website.com' 
page = urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 

page = soup.findAll('title') 

for element in page:  
    print element 

file_name = raw_input("What do you want to name the file?> ") 
text_file = open("/Users/user1/Projects/%s.txt" % file_name, "w") 
text_file.write("%s" % page) 
text_file.close() 

은 다음과 같습니다 : 여기

는 내가 지금까지 무엇을 가지고

$<title>food</title> 
<title>ball</title> 
<title>car</title> 
<title>desk</title> 
<title>blue food</title> 
<title>green food</title> 
<title>red ball</title> 

내가 '음식'만 포함 인쇄 결과에 얻을 것 어떻게?

답변

0

.string을 사용하여 요소의 내용을 가져올 수 있습니다. 당신은 단지 food과 결과를 포함 할 경우, 해당에 대한 검사를 추가

 
for element in page: 
    if 'food' in element.string: 
     print element.string 
+0

굉장! 고마워, 완벽하게 작동했습니다. 그래서 .string을 추가하면 결과가 문자열로 바뀝니 까? 또한, 그것이 그것의 경우에 관계없이 내가 필요로하는 것을 돌려주는 방법이 있습니까? 예를 들어 '음식'과 '음식'이 모두 필요한 경우 –

+0

예, 해당 요소의 시작 태그와 종료 태그 사이의 문자열입니다. –

+0

@AlexRamadan : '음식'이나 '음식'을 따로 확인할 수 있습니다 (논리 OR 연산자 사용). 유연성을 원한다면 정규식을 사용할 수 있습니다. (이것은 또한 "음식"과 같은 것들을 "음식"과 같은 것을 제외하고 "음식"을 전체 단어로만 일치 시키도록 할 것입니다. –

0

을 exemple를 들어 사용자가 페이지에서 데이터를 추출하고 CSV 파일에 넣어하려는 경우, 당신은 그렇게 할 수 있습니다

import urllib2 
from BeautifulSoup import BeautifulSoup 
import csv 

file_name = raw_input("What do you want to name the file?> ") 
c = csv.writer(open("%s.csv" % (file_name), "a"),delimiter=";") # Open the CSV File and Write in 

url = 'http://www.website.com' 
page = urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 

page = soup.findAll('title') 

for element in page:  
    element = element.text.encode('utf-8') 
    c.writerow([element]) 

Excel 또는/및 텍스트 편집기 소프트웨어에서 CSV 파일을 사용할 수 있습니다. 유용 할 수 있습니다 내 코드가 완벽에서 멀리 떨어져 있지만 어쨌든, 작동해야합니다 :)

관련 문제