1 # -*- coding: utf-8 -*-
2 # @Time : 2020/7/6 13:46
3 # @Author : Chunfang
4 # @Email : 3470959534@qq.com
5 # @File : test02.py
6 # @Software: PyCharm
7
8 import os,xlrd,time
9 import re
10 import datetime
11 from openpyxl import load_workbook
12 from selenium import webdriver
13 from time import sleep
14 from selenium.webdriver.chrome.service import Service
15
16 def down_data():
17 start = datetime.datetime.now()
18 filepath2 = 'SKU-URL-weight.xlsx' # 新建表格,将唯一的sku,url写入
19
20 wb2 = load_workbook(filepath2)
21 ws2 = wb2.worksheets[0]
22
23 def down_data(url): # 获取每个链接的数据
24 # 加载浏览器带表头数据爬虫
25 c_service = Service(r'D:\Python\Scripts\chromedriver.exe')
26 c_service.command_line_args()
27 c_service.start()
28 profile_directory = r'--user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data'
29 option = webdriver.ChromeOptions()
30 option.add_argument(profile_directory)
31 driver = webdriver.Chrome(options=option)
32 driver.implicitly_wait(3)
33 driver.get(url)
34 sleep(3)
35 data = driver.page_source
36 sleep(2)
37 driver.quit()
38 sleep(2)
39 c_service.stop()
40 return data
41 def station(data):
42 busy = re.findall('<div class="tips" style=".*?<p>.*?(亲.*?回来).*?</p>', data, re.S)
43 # print(busy)
44 error_404 = re.findall('h3 class="title">.*?<em>(抱歉.*?)</em>', data, re.S)
45 # print(error_404)
46 pro_weight = re.findall('<span>.*?<b>.*?重量</b>.*?<em>(.*?)</em>', data, re.S)
47 # print(pro_weight)
48 right = re.findall('title="点击此按钮.*?rel="nofollow"><span>(.*?订购)</span></a>', data, re.S)
49 # print(right)
50 stations.append(busy)
51 stations.append(error_404)
52 stations.append(pro_weight)
53 stations.append(right)
54
55 for i in range(16635,ws2.max_row+1):
56 print('第' + str(i) + '个sku:' + str(ws2.cell(i, 1).value))
57 stations = []
58 data=down_data(ws2.cell(i,2).value)
59 # print(data)
60 station(data)
61 while len(stations[0])!=0:#没有加载出来
62 stations = []
63 data = down_data(ws2.cell(i, 2).value)
64 station(data)
65 print(stations)
66 if len(stations[1])==0:#判断404
67 if len(stations[2])==0:#判断重量
68 if len(stations[3])==0:#判断产品是否有货,可订购
69 ws2.cell(i, 3).value = '产品下架'
70 else:
71 ws2.cell(i,3).value = '产品有货,没有标注重量'
72 else:
73 ws2.cell(i, 3).value = stations[2][1]#添加重量
74 else:
75 ws2.cell(i,3).value = stations[1][0]#抱歉404
76 print(stations)
77
78 wb2.save(filepath2)
79
80 end = datetime.datetime.now()
81 print('Running time: %s Seconds'%(end-start))
82
83 #发邮件给对方邮箱
84 import smtplib
85 from email.mime.text import MIMEText
86 from email.mime.multipart import MIMEMultipart
87 from email.mime.image import MIMEImage
88 from email.mime.application import MIMEApplication
89
90 #设置服务器所需信息
91 fromaddr ='3470959534@qq.com'
92 password = '验证码'#qq的邮箱验证码
93 toaddrs = ['3470959534@qq.com','1725714926@qq.com']
94
95 #邮件内容设置
96 message = MIMEText('hello! 这是跑货源结果,请查收','plain','utf-8')
97 message['Subject']='测试邮件'
98
99 excel_file =filepath2
100 excel_apart = MIMEApplication(open(excel_file,'rb').read())
101 excel_apart.add_header('Content-Disposition','atttachment',filename=excel_file)
102
103 m = MIMEMultipart()
104 m.attach(message)
105 m.attach(excel_apart)
106
107 try:
108 server = smtplib.SMTP('smtp.qq.com')
109 server.login(fromaddr,password)
110 server.sendmail(fromaddr,toaddrs,m.as_string(),)
111 print('success')
112 server.quit()
113 except smtplib.SMTPException as e:
114 print('error:',e)
115
116 down_data()
117 #设置时间跑店小秘货源
118 # while True:
119 # time_now = time.strftime('%H:%M:%S',time.localtime())
120 #
121 # if time_now =="20:00:10":
122 # down_data()
123 # # print('Hello')
124 # subject = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())+'定时发送测试'
125 # print(subject)
126 # time.sleep(2)

Python 爬取1688货源重量,自动发邮件到指定邮箱(qq),设置定时运行程序的更多相关文章

  1. python爬取网站页面时,部分标签无指定属性而报错

    在写爬取页面a标签下href属性的时候,有这样一个问题,如果a标签下没有href这个属性则会报错,如下: 百度了有师傅用正则匹配的,方法感觉都不怎么好,查了BeautifulSoup的官方文档,发现一 ...

  2. python爬取免费优质IP归属地查询接口

    python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...

  3. 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)

    由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不 ...

  4. python爬取人民币汇率中间价

    python爬取人民币汇率中间价,从最权威的网站中国外汇交易中心. 首先找到相关网页,解析链接,这中间需要经验和耐心,在此不多说. 以人民币兑美元的汇率为例(CNY/USD),脚本详情如下: wind ...

  5. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...

  6. Python爬取招聘信息,并且存储到MySQL数据库中

    前面一篇文章主要讲述,如何通过Python爬取招聘信息,且爬取的日期为前一天的,同时将爬取的内容保存到数据库中:这篇文章主要讲述如何将python文件压缩成exe可执行文件,供后面的操作. 这系列文章 ...

  7. Python爬取视频指南

    摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://w ...

  8. Python爬取网页信息

    Python爬取网页信息的步骤 以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评论的时间和评论的内容为例. 1.确认网址 在浏览器中输入初 ...

  9. Python 爬取 热词并进行分类数据分析-[解释修复+热词引用]

    日期:2020.02.02 博客期:141 星期日 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

随机推荐

  1. ctf之GET

    题目信息如图 启动环境 根据信息只需将参数?what=flag添加到url上即可

  2. 10年.NET老程序员推荐的7个开发类工具

    做.NET软件工作已经10年了,从程序员做 到高级程序员,再到技术主管,技术总监.见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio ...

  3. 22.1.23Manacher算法、双端队列、单调栈

    22.1.23Manacher算法.双端队列.单调栈 1.Manacher算法 1)用途: Manacher算法用于解决类似求某个字符串中最长的回文子串.(回文就是正着读和倒着读一样的结构). 2)算 ...

  4. Android中的Coroutine协程原理详解

    前言 协程是一个并发方案.也是一种思想. 传统意义上的协程是单线程的,面对io密集型任务他的内存消耗更少,进而效率高.但是面对计算密集型的任务不如多线程并行运算效率高. 不同的语言对于协程都有不同的实 ...

  5. Error running 'App': Command line is too long. Shorten command line for App or also for Spring Boot default configuration.

    找到标签 <component name="PropertiesComponent">.在标签里加一行  : <property name="dynam ...

  6. Java并发机制(5)--同步容器与并发容器

    Java并发编程:同步容器整理自:博客园-海子-http://www.cnblogs.com/dolphin0520/p/3933404.html1.同步容器出现原因 常用的ArrayList,Lin ...

  7. Kafka 都有哪些特点?

    高吞吐量.低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作. ...

  8. 什么是消费者驱动的合同(CDC)?

    这基本上是用于开发微服务的模式,以便它们可以被外部系统使用.当我们处理 微服务时,有一个特定的提供者构建它,并且有一个或多个使用微服务的消费者. 通常,提供程序在 XML 文档中指定接口.但在消费者驱 ...

  9. Vue报错之"[Vue warn]: Invalid prop: type check failed for prop "jingzinum". Expected Number with value NaN, got String with value "fuNum"."

    一.报错截图 [Vue warn]: Invalid prop: type check failed for prop "jingzinum". Expected Number w ...

  10. (原创)[C#] 一步一步自定义拖拽(Drag&Drop)时的鼠标效果:(一)基本原理及基本实现

    一.前言 拖拽(Drag&Drop),属于是极其常用的基础功能. 无论是在系统上.应用上.还是在网页上,拖拽随处可见.同时拖拽时的鼠标效果也很漂亮,像这样: 这样: 还有这样: 等等等等. 这 ...