我正在使用urllib在web分析器上工作。我需要只能保存位於特定div標記內的行。例如:我將所有文本保存在div「body」中。這意味着div標籤內的所有文本都會被返回。這也意味着如果其中有其他div,那很好,但只要我打到父母,它就會停下來。有任何想法嗎?只選擇div標籤內的文本
我的想法
搜索你的期待 股利。
記錄位置。
跟蹤 未來的任何div。 +1爲新div -1結尾 div。
當回到0時,你的父母在 div?保存位置。
然後保存數據從beginnning 號碼到結束號碼?
我正在使用urllib在web分析器上工作。我需要只能保存位於特定div標記內的行。例如:我將所有文本保存在div「body」中。這意味着div標籤內的所有文本都會被返回。這也意味着如果其中有其他div,那很好,但只要我打到父母,它就會停下來。有任何想法嗎?只選擇div標籤內的文本
我的想法
搜索你的期待 股利。
記錄位置。
跟蹤 未來的任何div。 +1爲新div -1結尾 div。
當回到0時,你的父母在 div?保存位置。
然後保存數據從beginnning 號碼到結束號碼?
如果你不是你自己解析HTML代碼的想法真的很興奮,有兩個很好的選擇:
你可能會發現, lxml的運行速度比BeautifulSoup快,但在我的使用中,Beautiful Soup非常容易學習和使用,並處理了在野外發現的典型蹩腳HTML,足以讓我無需其他任何東西。
YMMV。
使用lxml:
import lxml.html as lh
content='''\
<body>
<div>AAAA
<div>BBBB
<div>CCCC
</div>DDDD
</div>EEEE
</div>FFFF
</body>
'''
doc=lh.document_fromstring(content)
div=doc.xpath('./body/div')[0]
print(div.text_content())
# AAAA
# BBBB
# CCCC
# DDDD
# EEEE
div=doc.xpath('./body/div/div')[0]
print(div.text_content())
# BBBB
# CCCC
# DDDD
我個人更喜歡LXML一般,但有時它的HTML處理是有點過了......這裏有一個BeautifulSoup配方是否有幫助。
from BeautifulSoup import BeautifulSoup, NavigableString
def printText(tags):
s = []
for tag in tags :
if tag.__class__ == NavigableString :
s.append(tag)
else :
s.append(printText(tag))
return "".join(s)
html = "<html><p>Para 1<div class='stuff'>Div Lead<p>Para 2<blockquote>Quote 1</div><blockquote>Quote 2"
soup = BeautifulSoup(html)
v = soup.find('div', attrs={ 'class': 'stuff'})
print v.text_content
男人我愛美麗的女孩 – JudoWill 2010-10-26 18:43:08