def see_url(browser: str, email: str, pw: str): log = Log(error_path='error.log', debug_path='normal.log', json_path='info.log') log.set_level(Log.stdout_level) # for test log.debug('test ' + browser + '_' + email) start = time.time() crawler = FacebookCrawler(user_name=email, password=pw, log=log, browser=browser) crawler.init() log.debug('init') crawler.login_facebook() log.debug('login') crawler.set_sleep(1) # info_dict = crawler.open_homepage_by_param(name='الزجوي عبدلاه', city='Cairo', country_code='EG') # print(info_dict) # info_dict = crawler.open_homepage_by_param(name='Angel Gunawan', city='Surabaya', country_code='ID') # print(info_dict) info_dict = crawler.open_homepage_by_param(name='Arman Ali', city='Gorakhpur', country_code='IN') print(info_dict) # info_dict = crawler.open_homepage_by_param(name='Jose Antonio Lara Gálvez', city='Jerez de la Frontera', # country_code='ES') # print(info_dict) # info_dict = crawler.open_homepage_by_param(name='Elena Iuliana', city='Bucharest', country_code='RO') # print(info_dict) end = time.time() log.debug('time cost:' + str(end - start) + ' s')
def execute(self, sql): """ 执行SQL :param sql: :return: """ try: if not self.cur: self.connect() ret = self.cur.execute(sql) # 执语句行 self.conn.commit() return ret except pymysql.Error as e: Log().write_file(str(e)) return False
def browser_param(browser: str, email: str, pw: str): log = Log(error_path='error.log', debug_path='normal.log', json_path='info.log') log.set_level(Log.stdout_level) # for test log.debug('test ' + browser + '_' + email) start = time.time() crawler = FacebookCrawler(user_name=email, password=pw, log=log, browser=browser) crawler.init() crawler.login_facebook() # crawler.get_browser().save_screenshot('login.png') crawler.set_sleep(1) user_url = 'https://www.facebook.com/app_scoped_user_id/1758044224504993/' user_info = crawler.open_homepage_by_url(user_homepage=user_url) log.debug(user_info) end = time.time() log.debug('time cost:' + str(end - start) + ' s')
from tools.log import Log if __name__ == "__main__": #db = MySQL() #data = db.find("select * from wp_posts") #print(data) sql = "INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) \ VALUES(NULL , 1, '2017-04-09 22:39:35', '2017-04-09 14:39:35', '%s', '%s', '', 'inherit', 'closed', 'closed', '', '', '', '', '2017-04-09 22:39:35', '2017-04-09 14:39:35', '', 206, '', 0, 'revision', '', 0);" sql = sql % ("conent", "title") print(sql) Log().write_file(sql) #db.execute(sql)
def __init__(self, case_id): self.case_id = case_id self.opera_excel = Operation_Excel() self.get_data = Get_Data() self.log = Log() self.row_index = self.opera_excel.get_index_caseId(self.case_id)
# encoding: utf-8 __author__ = 'zhanghe' from tools.log import Log # 实例化,修改日志文件名称,加载新配置 log_test = Log() log_test.log_filename = 'log_test.log' log_test.log_config() # 测试 log_test.debug('This is debug message') log_test.info('This is info message') log_test.warning('This is warning message') log_test.get_memory_usage() print log_test.memory_usage """ 测试结果: 内存使用4.14M 4.14M """
class Email: ''' 邮件类。用来给指定用户发送邮件,可指定多个收件人,可带附件 ''' log = Log() def __init__(self, server, sender, password, receiver, title, message=None, path=None): ''' 初始化Email server: smtp服务器,必填 sender: 发件人,必填 password: 发件人密码,必填 receiver: 收件人。多收件人用“;”隔开,必填 title:邮件标题,必填 message: 邮件正文,非必填 path: 附件路径,可传入list(多附件)或str(单附件),非必填 ''' self.title = title self.message = message self.files = path self.msg = MIMEMultipart('related') self.server = server self.sender = sender self.receiver = receiver self.password = password def _attach_file(self, att_file): '''将单个文件添加到附件列表中''' att = MIMEText(open('%s' % att_file, 'rb').read(), 'palin', 'utf-8') att['Content-Type'] = 'application/octet-stream' file_name = re.split(r'[\\|/]', att_file) att["Content-Disposition"] = 'attachment; filename="%s"' % file_name[-1] self.msg.attach(att) self.log.info('attach file {}'.format(att_file)) def send(self): self.msg['Subject'] = self.title self.msg['From'] = self.sender self.msg['To'] = self.receiver #邮件正文 if self.message: self.msg.attach(MIMEText(self.message)) #添加附件,支持多个附件(传入list) if self.files: if isinstance(self.files, list): for f in self.files: self._attach_file(f) elif isinstance(self.files, str): self._attach_file(self.files) #连接服务器并发送 try: smtp_server = smtplib.SMTP(self.server) #连接服务器 except Exception as e: self.log.exception('发送邮件失败,无法连接到SMTP服务器,检查网络以及SMTP服务器. %s', e) else: try: smtp_server.login(self.sender, self.password) except smtplib.SMTPAuthenticationError as e: self.log.exception('用户名密码验证失败!%s' % e) else: smtp_server.sendmail(self.sender, self.receiver.split(';'), self.msg.as_string()) # 发送邮件 finally: smtp_server.quit() # 断开连接 self.log.info('发送邮件"{0}"成功! 收件人:{1}。如果没有收到邮件,请检查垃圾箱,' '同时检查收件人地址是否正确'.format(self.title, self.receiver))
# coding:utf-8 import os import smtplib import time from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from tools.log import Log import configparser as cparser proj_path = os.path.dirname(os.path.dirname(__file__)) # 测试报告的路径 reportPath = proj_path + "/report" logger = Log() # ======== Reading email_config.ini setting, init vars=========== base_dir = str(os.path.dirname(os.path.dirname(__file__))) base_dir = base_dir.replace('\\', '/') file_path = base_dir + "/config/email_config.ini" cf = cparser.ConfigParser() cf.read(file_path, encoding="UTF-8") mail_user = cf.get("emails", "mail_user") mail_pwd = cf.get("emails", "mail_pwd") mail_to = cf.get("emails", "mail_to") subject = cf.get("emails", "subject") mail_host = cf.get("emails", "mail_host") class SendMail: def __init__(self, receiver=None):
'port': sys.argv[2], 'user': sys.argv[3], 'password': sys.argv[4], 'database': sys.argv[5] } if len(sys.argv) > 6: args['directory'] = sys.argv[6] else: args['directory'] = DEFAULT_DIRECTORY return args args = parse_args() log = Log() sql = MysqlImport(args['host'], args['port'], args['user'], args['password'], args['database'], log) log.info('Creating schema') sql.run_script('schema/mysql/drop-tables.sql') sql.run_script('schema/mysql/create-tables.sql') log.info('Analyzing files') parsers = generate_parsers_from_files(args['directory'], log) if len(parsers) > 0: log.info('Found', len(parsers), 'files') else: log.info('No files found.') log.info('Truncating tables')