如何在 python 代码的 HTML 部分显示 Python 字典键值对
How to display the Python Dictionary key and value pairs in HTML part of the python code
我正在处理这段代码,我正在从网站上进行网络抓取并获取值并将其分配给字典变量。然后,我发送一封电子邮件,其中包含 HTML 格式的键值对。
我卡在 HTML 部分的显示字典键和值对中了。我尝试发送电子邮件,但电子邮件已成功发送到目标,但是 HTML 中的字典值正在打印,我得到的是原样中提到的代码。
import requests
from bs4 import BeautifulSoup as BS
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
me = "examplefrom@gmail.com"
you = "exampleto@gmail.com"
def webScrape():
dict={}
URL="Website URL"
page=requests.get(URL)
soup=BS(page.content, 'html.parser')
results=soup.find_all('div', class_="blog-posts clear")
for results_element in results:
title_elem = results_element.find_all('h2', class_='home-title')
link_element=results_element.find_all('a', class_="story-link", href=True)
for index,(title,link) in enumerate(zip(title_elem, link_element)):
dict[str(title.text)]=str(link['href'])
return dict
dictionary_values=webScrape()
msg = MIMEMultipart()
password = "password"
msg['Subject'] = "Your Webscrape Data"
msg['From'] = me
msg['To'] = you
html = """\
<html>
<head></head>
<body>
{% for key, value in dictionary_values.iteritems() %}
<br/>
<h3><a href={{key}}>{{value}}</a></h3>
<br/>
{% endfor %}
</body>
</html>
"""
part2 = MIMEText(html, 'html')
msg.attach(part2)
server = smtplib.SMTP('smtp.gmail.com: 587')
server.starttls()
server.login(msg['From'], password)
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
print("Send Successfully")
你似乎在使用 Jinja2 模板语法,但你并没有在这里实际导入或使用 Jinja2,你可以这样做:
from jinja2 import Environment
jinja_env = Environment(autoescape=True)
template = jinja_env.from_string("""
<html>
<head></head>
<body>
{% for key, value in dictionary_values.items() %}
<br/>
<h3><a href={{key}}>{{value}}</a></h3>
<br/>
{% endfor %}
</body>
</html>
""")
html = template.render(dictionary_values=dictionary_values)
我正在处理这段代码,我正在从网站上进行网络抓取并获取值并将其分配给字典变量。然后,我发送一封电子邮件,其中包含 HTML 格式的键值对。
我卡在 HTML 部分的显示字典键和值对中了。我尝试发送电子邮件,但电子邮件已成功发送到目标,但是 HTML 中的字典值正在打印,我得到的是原样中提到的代码。
import requests
from bs4 import BeautifulSoup as BS
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
me = "examplefrom@gmail.com"
you = "exampleto@gmail.com"
def webScrape():
dict={}
URL="Website URL"
page=requests.get(URL)
soup=BS(page.content, 'html.parser')
results=soup.find_all('div', class_="blog-posts clear")
for results_element in results:
title_elem = results_element.find_all('h2', class_='home-title')
link_element=results_element.find_all('a', class_="story-link", href=True)
for index,(title,link) in enumerate(zip(title_elem, link_element)):
dict[str(title.text)]=str(link['href'])
return dict
dictionary_values=webScrape()
msg = MIMEMultipart()
password = "password"
msg['Subject'] = "Your Webscrape Data"
msg['From'] = me
msg['To'] = you
html = """\
<html>
<head></head>
<body>
{% for key, value in dictionary_values.iteritems() %}
<br/>
<h3><a href={{key}}>{{value}}</a></h3>
<br/>
{% endfor %}
</body>
</html>
"""
part2 = MIMEText(html, 'html')
msg.attach(part2)
server = smtplib.SMTP('smtp.gmail.com: 587')
server.starttls()
server.login(msg['From'], password)
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
print("Send Successfully")
你似乎在使用 Jinja2 模板语法,但你并没有在这里实际导入或使用 Jinja2,你可以这样做:
from jinja2 import Environment
jinja_env = Environment(autoescape=True)
template = jinja_env.from_string("""
<html>
<head></head>
<body>
{% for key, value in dictionary_values.items() %}
<br/>
<h3><a href={{key}}>{{value}}</a></h3>
<br/>
{% endfor %}
</body>
</html>
""")
html = template.render(dictionary_values=dictionary_values)