我试图从多个html页面收集数据,特别是列表元素中的数据。我正试图将这些数据添加到字典中以备以后使用,我得到了如我所期望的那样提取数据,但我将数据输入dict并没有如预期的那样工作。我当前正在覆盖每个条目,而不是添加新条目。有谁能指出我哪里出错了吗?在
当前代码
from BeautifulSoup import BeautifulSoup
import requests
import re
person_dict = {}
.....
<snip>
<snip>
.....
soup = BeautifulSoup(response.text)
div = soup.find('div', {'id': 'object-a'})
ul = div.find('ul', {'id': 'object-a-1'})
li_a = ul.findAll('a', {'class': 'title'})
li_p = ul.findAll('p', {'class': 'url word'})
li_po = ul.findAll('p')
for a in li_a:
nametemp = a.text
name = (nametemp.split(' - ')[0])
person_dict.update({'Name': name}) #I attempted updating
for lip in li_p:
person_dict['url'] = lip.text #I attempted adding directly
for email in li_po:
reg_emails = re.compile('[a-zA-Z0-9.]*' + '@')
person_dict['email'] = reg_emails.findall(email.text)
print person_dict # results in 1 entry being returned
测试数据
^{pr2}$
是否需要使用字典取决于您自己,但是如果您选择使用字典,则最好为每个列表项单独使用一个字典,而不是为所有条目使用一个字典。在
我建议你把所有的条目都存储在一个列表中。下面的代码显示了两个建议,要么使用
tuple
来存储每个项目的不同信息位,要么使用字典。在如果您只想显示信息或将其写入文件,
tuple
解决方案会更快。在对于示例HTML,将显示以下内容:
^{pr2}$注意,从文本中提取电子邮件地址本身就是一个完整的问题。上面的解决方案可以很容易地匹配那些实际上不是格式良好的电子邮件地址的条目,但在这里就足够了。在
你可能走错了路。试试这样的方法:
相关问题 更多 >
编程相关推荐