2019-05-13--重学Python29--selenium获取双色球信息爬虫--成功!

在本地测试成功了。其实,我主要想配置在云服务器上,就完美了!




from selenium import webdriver
import time
import re
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText


dict2 = {}


class SsqSpider(object):
    driver_path = "D:\chromedriver_win32\chromedriver.exe"

    def __init__(self):
        self.driver = webdriver.Chrome(executable_path=SsqSpider.driver_path)
        self.url = "http://www.cwl.gov.cn/kjxx/ssq/kjgg/"
        self.positions = []

    def run(self): #运行程序
        self.request_detail_page(self.url)

    def request_detail_page(self, url): #请求网页,提取想要的信息
        self.driver.get(url)
        source = self.driver.page_source  # 获取当前页面的源代码。包含我们想要的详细信息--彩票相关信息
        self.get_details(source)

    def get_details(self,source):
        global dict2
        soup = BeautifulSoup(source, 'lxml')

        first = soup.select("body > div.wqkj.ssq > div > div.bgzt > table > tbody > tr:nth-child(1)") #返回的是一个列表。只有1个元素。
        first2 = first[0]
        # print(first2)
        # print(type(first2))
        ret = re.findall(r"<span class=\".+?\">(\d+?)</span>", str(first2))  #用正则表达式对这个字符串提取信息。
        # ret = re.findall(r"\d",str(first2))
        # print(ret)  #获取的是6个红球,1个篮球。
        #获取开奖日期
        date = soup.select("body > div.wqkj.ssq > div > div.bgzt > table > tbody > tr:nth-child(1) > td:nth-child(2)")[0]
        # print(date.text)
        dict2 = {
            "出奖日期": date.text,
            "中奖号码,最后一个是篮球":ret
        }
        # print(dict)
        print(dict2)

    def sendmail(self,subject, email_text):
        email_host = 'smtp.qq.com'  # 邮箱地址
        email_user = '937758398@qq.com'  # 发送者账号
        email_pwd = 'ebbbatqfmlosbaid'  # 发送者密码
        maillist = '15201308426@139.com'
        # 收件人邮箱,多个账号的话,用逗号隔开
        me = email_user
        msg = MIMEText(email_text)  # 邮件内容
        msg['Subject'] = subject  # 邮件主题
        msg['From'] = me  # 发送者账号
        msg['To'] = maillist  # 接收者账号列表
        smtp = smtplib.SMTP_SSL(email_host, port=465)  # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25
        smtp.login(email_user, email_pwd)  # 发送者的邮箱账号,密码
        smtp.sendmail(me, maillist, msg.as_string())
        # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
        smtp.quit()  # 发送完毕后退出smtp
        print('email send success.')



if __name__ == "__main__":
    spider = SsqSpider()
    newest = "位置"
    spider.run()
    newest = dict2["出奖日期"]
    spider.sendmail("双色球彩票刷新了"+dict2["出奖日期"], "号码:" + str(dict2["中奖号码,最后一个是篮球"]))
    i=0
    while True:
        spider.run()
        if dict2["出奖日期"] == newest: #如果最新的日期等于 newest当中的数值,
            newest = dict2["出奖日期"]  #把最新的日期赋值给中间件
            print("没有最新的,需要等待")
            i = i + 1
            print("刷新%s次" % i)
        else:
            spider.sendmail("最新的彩票刷新了", "出奖日期:" + dict2["出奖日期"] + "======中奖号码:" + str(dict2["中奖号码,最后一个是篮球"]))
            print("日期:" + dict2["出奖日期"] + "号码:" + str(dict2["中奖号码,最后一个是篮球"]))
        time.sleep(20)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • '''6-1 使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name ...
    水中小船阅读 3,911评论 0 1
  • 初时对中医不甚了解,只笼统的记得有关中医的两句话,一是"望闻问切",另一是"理法方药"。大致理解应该是中医诊断病...
    无岐阅读 1,189评论 0 0
  • "如果可以的话,我决定去找你。" 这是季子最喜欢听的一句话, 也是最难说出口的一句话。 某一日 季子与朋友相约在一...
    一朝明月阅读 1,566评论 0 0
  • 很多人都有朋友向我们借钱!而我们无法拒绝的那么我们就要考虑一下几点! 1;在借钱给别人的时候,首先要考虑的是其偿还...
    社会狼阅读 676评论 0 0