2013-08-26 2 views
2

나는 beautifulSoup4가있는 웹 페이지 스크레이퍼를 만들고 있습니다. 나는 기사의 원본 그리고 심상을 얻고 싶, 그러나 몇몇 문제가있다! 나는이와 전체 텍스트를 얻을텍스트와 이미지를 함께 스크랩하는 방법은 무엇입니까?

<div> 
some texts1 
<br /> 
<img src="imgpic.jpg" /> 
<br /> 
some texts2 
</div> 

:

post_soup.get_text() 

을 마지막으로 나는 HTML 페이지에 저장 urllib2 평소와 div의 모든 이미지를 저장하고 HTML 코드는 다음과 같이 s 번째입니다 모든 텍스트를 맨 위에 놓고 이미지를 마침내 새 html 페이지에 저장하려면 먼저 페이지를 긁어 내서 처음에 some texts1을 입력하십시오. imagesome texts2

제안 사항을 알려주십시오.

답변

1

이 최고의 올바른 방법은 아니지만 작동합니다 :

from bs4 import BeautifulSoup 

html = "<div>\ 
some texts1\ 
<br />\ 
<img src=\"imgpic.jpg\" />\ 
<br />\ 
some texts2\ 
</div>" 

soup = BeautifulSoup(html) 
text = "+".join(soup.stripped_strings).split("+") 

print text[0] 
print soup.find("img")['src'] 
print text[1] 

출력 :

가 대신 get_text()를 사용
some texts1 
imgpic.jpg 
some texts2 
+0

+1 어떻게 더 잘 될 수 있을까? 그것은 위쪽/아래쪽에 여러 줄의 문자열을 올바르게 얻습니다. – mr2ert

0

, 나는 전체 <div> 부분을 반환 prettify()을 사용하십시오 당신은 문자열로 원합니다. 이렇게하면 상단과 하단에 올바른 텍스트가 항상 보장됩니다. 거기에서 당신은 당신이 원하는 것을 얻을 수있는 문자열의 일부를 벗겨 수 있습니다

# post_soup is the <div> element you posted 
s = post_soup.prettify() 
split_s = s.split('<br/>') 
top = split_s[0].strip('<div>') 
bottom = split_s[-1].strip('</div>') 

출력 :

>>> top 
u'\n some texts1\n ' 
>>> bottom 
u'\n some texts2\n' 
관련 문제