如何显示附加列表中的单独值
How to show separate values from appended list
我正在尝试显示使用 bs4 抓取的附加项目列表中的值。目前,我的代码只有 returns 一整套数据,但我希望从数据中显示单独的值。现在,我得到的是:
NameError: value is not defined.
怎么做?
data = []
for e in soup.select('div:has(> div > a h3)'):
data.append({
'title':e.h3.text,
'url':e.a.get('href'),
'desc':e.next_sibling.text,
'email': re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text).group(0) if
re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text) else None
})
data
title = print(title) # name error
desc = print(desc) # name error
email = print(email) # name error
你可以这样做:
for e in soup.select('div:has(> div > a h3)'):
title=e.h3.text,
url=e.a.get('href'),
desc=e.next_sibling.text,
email= re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text).group(0) if re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text) else None
print(title)
print(desc)
print(email)
print(url)
主要问题是您尝试仅在 keys
上引用,而没有考虑 data
一个字典列表。
所以如果你想打印一个特定的字典,你必须通过索引从 data
中选择你的字典:
print(data[0]['title'])
print(data[0]['desc'])
print(data[0]['email'])
替代方案只是在每个字典的值上迭代 data
和 print/operate:
for d in data:
print(d['title'])
print(d['desc'])
print(d['email'])
或
for d in data:
title = d['title']
desc = d['desc']
email = d['email']
print(f'print title only: {title}')
我正在尝试显示使用 bs4 抓取的附加项目列表中的值。目前,我的代码只有 returns 一整套数据,但我希望从数据中显示单独的值。现在,我得到的是:
NameError: value is not defined.
怎么做?
data = []
for e in soup.select('div:has(> div > a h3)'):
data.append({
'title':e.h3.text,
'url':e.a.get('href'),
'desc':e.next_sibling.text,
'email': re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text).group(0) if
re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text) else None
})
data
title = print(title) # name error
desc = print(desc) # name error
email = print(email) # name error
你可以这样做:
for e in soup.select('div:has(> div > a h3)'):
title=e.h3.text,
url=e.a.get('href'),
desc=e.next_sibling.text,
email= re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text).group(0) if re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text) else None
print(title)
print(desc)
print(email)
print(url)
主要问题是您尝试仅在 keys
上引用,而没有考虑 data
一个字典列表。
所以如果你想打印一个特定的字典,你必须通过索引从 data
中选择你的字典:
print(data[0]['title'])
print(data[0]['desc'])
print(data[0]['email'])
替代方案只是在每个字典的值上迭代 data
和 print/operate:
for d in data:
print(d['title'])
print(d['desc'])
print(d['email'])
或
for d in data:
title = d['title']
desc = d['desc']
email = d['email']
print(f'print title only: {title}')