【发布时间】:2017-12-02 14:59:28
【问题描述】:
我有一个如下所示的 HTML 文档,self.soup 是 BeautifulSoup 对象。我试图在列表元素中抓取数据。列表元素如下所示:
<ul class="list-group">
<li class="list-group-item">
<span class="strong">Name</span>
<span class="pull-right">Piter</span>
</li>
<li class="list-group-item">
<span class="strong">Year</span>
<span class="pull-right">2017</span>
</li>
</ul>
python 文件 scrape.py
#person is a array
need = { 'Name' : 'name',
'Year' : 'year'
}
第一次尝试
specs = self.soup.select("ul.list-group li.list-group-item")
if len(specs) > 0 :
for data in specs :
text = data.get_text()
if need.has_key( data[0].strip()) :
if need[ data[0].strip() ] not in person or person[ need[ data[0].strip() ] ] == '':
person[ need[ text[0].strip() ] ] = text[1].strip()
第一个错误
File "scraper.py", line 68, in scrape
if need.has_key( data[0].strip()) :
File "build/bdist.linux-x86_64/egg/bs4/element.py", line 1011, in__getitem__
KeyError: 0
第二次尝试
specs = self.soup.select("ul.list-group li.list-group-item")
if len(specs) > 0 :
for data in specs :
text = data.get_text()
if need.has_key( data[0].strip()) :
if need[ data[0].strip() ] not in person or person[ need[ data[0].strip() ] ] == '':
person[ need[ text[0].strip() ] ] = text[1].strip()
第二个错误
File "site_scrapers/v12software.scraper.py", line 66, in scrape
text = [ data.contents[0].get_text(), data.contents[1].get_text() ]
File "build/bdist.linux-x86_64/egg/bs4/element.py", line 737, in __getattr__
AttributeError: 'NavigableString' object has no attribute 'get_text'
我试图将上面的元素字符串放到 person 数组中。
我需要这样的结果:
print person['Name']
#output Piter
print person['Year']
#output 2017
【问题讨论】:
标签: python html web-scraping beautifulsoup