我对python的web抓取还不熟悉,用beauthoulsoup来解析一个web并发送邮件,但是,,,我想这是关于当我试图解析web时出现一些参数错误,,, 我可以收到邮件,但是,, 我总是收到“不是乔”的邮件,, 但网上显示乔,,, 我怎么能收到“是乔”的邮件?? 感谢所有回答我的人!我用python3,web端http://www.douban.com/people/25698302/
# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from bs4 import BeautifulSoup
from urllib.request import urlopen
import time
def sendMail(subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = "myMialServer@myms.com"
msg['To'] = "toMyAmail@myAmail.com"
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
bsObj = BeautifulSoup(urlopen("http://www.douban.com/people/25698302/"))
while(bsObj.find("title") == "Joe"):
sendMail("it is Joe!","It's Joe")
bsObj = BeautifulSoup(urlopen("http://www.douban.com/people/25698302/"))
sendMail("It's not Joe","It's not Joe")
首先,您不想使用
while
。while
是一个循环,这意味着您的代码将继续发送“It's Joe”的电子邮件(无限循环),因为bsObj
变量在循环内不会改变。在接下来,如果您打印出
bsObj.find("title")
,您会发现输出是:所以,它不等于“乔”。为什么循环总是失败。
你可以使用
bsObj.find('title').text().strip()
来得到你想要的。在显而易见的推论是,您的
while
循环条件在第一次求值时为false,因此循环体执行零次。在一些实验表明
bsObj.find("title")
的值是它的计算结果显然不等于},这与您正在测试的内容非常接近。在
"Joe"
。您还将发现bsObj.find("title").text
是{相关问题 更多 >
编程相关推荐