我正在尝试解析一个简化的 HTML 页面,如下所示:
<div class="anotherclass part"
<a href="http://example.com" >
<div class="column abc"><strike>£3.99</strike><br>£3.59</div>
<div class="column def"></div>
<div class="column ghi">1 Feb 2013</div>
<div class="column jkl">
<h4>A title</h4>
<p>
<img class="image" src="http://example.com/image.jpg">A, List, Of, Terms, To, Extract - 1 Feb 2013</p>
</div>
</a>
</div>
我是python编码的初学者,我已经阅读并重新阅读了http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html上的beautifulsoup文档
我有这个代码:
from BeautifulSoup import BeautifulSoup
with open("file.html") as fp:
html = fp.read()
soup = BeautifulSoup(html)
parts = soup.findAll('a', attrs={"class":re.compile('part'), re.IGNORECASE} )
for part in parts:
mypart={}
# ghi
mypart['ghi'] = part.find(attrs={"class": re.compile('ghi')} ).string
# def
mypart['def'] = part.find(attrs={"class": re.compile('def')} ).string
# h4
mypart['title'] = part.find('h4').string
# jkl
mypart['other'] = part.find('p').string
# abc
pattern = re.compile( r'\&\#163\;(\d{1,}\.?\d{2}?)' )
theprices = re.findall( pattern, str(part) )
if len(theprices) == 2:
mypart['price'] = theprices[1]
mypart['rrp'] = theprices[0]
elif len(theprices) == 1:
mypart['price'] = theprices[0]
mypart['rrp'] = theprices[0]
else:
mypart['price'] = None
mypart['rrp'] = None
我想从类中提取任何文本,def
并且ghi
我认为我的脚本正确。
我还想提取abc
我的脚本目前以相当笨重的方式执行的两个价格。有时这部分有两种价格,有时一种,有时没有。
最后,我想从我的脚本无法执行"A, List, Of, Terms, To, Extract"
的类中提取部分。jkl
我认为获取标签的字符串部分p
会起作用,但我不明白为什么它不起作用。这部分中的日期始终与课堂上的日期相匹配,ghi
因此应该很容易替换/删除它。
有什么建议吗?谢谢!