python文本筛选html,从html页面的列表元素中筛选数据

是否需要使用字典取决于您自己,但是如果您选择使用字典,则最好为每个列表项单独使用一个字典,而不是为所有条目使用一个字典。在

我建议你把所有的条目都存储在一个列表中。下面的代码显示了两个建议,要么使用tuple来存储每个项目的不同信息位,要么使用字典。在

如果您只想显示信息或将其写入文件,tuple解决方案会更快。在# Two possible ways of storing your data: a list of tuples, or a list of dictionaries

entries_tuples = []

entries_dictionary = []

soup = BeautifulSoup(text)

div = soup.find('div', {'id': 'object-a'})

ul = div.find('ul', {'id': 'object-a-1'})

for li in ul.findAll('li'):

title = li.find('a', {'class': 'title'})

url_href = title.get('href')

person = title.text

url_word = li.find('p', {'class': 'url word'}).text

emails = re.findall(r'\s+(\S+@\S+)(?:\s+|\Z)', li.findAll('p')[1].text, re.M) # allow for multiple emails

entries_tuples.append((url_href, person, url_word, emails))

entries_dictionary.append({'url_href' : url_href, 'person' : person, 'url_word' : url_word, 'emails' : emails})

for url_href, person, url_word, emails in entries_tuples:

print '{:25} {:10} {:25} {}'.format(url_href, person, url_word, emails)

print

for entry in entries_dictionary:

print '{:25} {:10} {:25} {}'.format(entry['url_href'], entry['person'], entry['url_word'], entry['emails'])

对于示例HTML,将显示以下内容:

^{pr2}$

注意,从文本中提取电子邮件地址本身就是一个完整的问题。上面的解决方案可以很容易地匹配那些实际上不是格式良好的电子邮件地址的条目,但在这里就足够了。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值