爬虫自动定时获取查重结果并将结果发送至指定邮箱
期刊论文查重,但是查询结果较慢(1-2天),总是手动刷新网站速度很繁琐,这时爬虫技术就可以派上用场了
url
- 点击此处
给的查询地址很简陋,基本上这些个saler的页面都一样,也没有任何反爬措施,我们只要在这里输入订单号就可以查询了
与以往不同的是,我们通常会爬取静态网页,但这次任务中我们需要输入订单号,再点击查询报告按钮页面才会更新,才能看到查重报告是否生成。所以直接get(url)不会有任何结果
- 思路
显然我们需要分析网页,这类需要提交参数才会返回数据的爬虫任务可以很自然的想到查看payload参数
很明显我们点击查询后返回的网址使用了post方法,而需要提交的内容就是proCode、type、mid、tid,其中tid就是你的订单号。
但我们在requests.post()方法中添加这四个参数仍旧无法返回数据,其实稍加思考就能够破解这个问题,那就是点击view source
这个格式是否就非常眼熟了呢?没错,这就是常用的url的格式,只要把这个格式加个“&”复制进url里即可,这个时候在去get就可以正常得到查重结果了
I = []
def cyq():url = "http://cx.bilunwen.com/qk/checkport&proCode=dfj&type=qk&mid=529&tid=xxxxxxxxxxxxx"#pp = json.dumps(para2)res = requests.get(url)soup = BeautifulSoup(res.text, "html.parser")tb = soup.find_all("tbody", {"class":"template-Container"})td = tb[0].find_all("td")for i in td:#print(i.text)I.append(i.text)return I
c = cyq()
c = [i for i in c if i != ''] #去除空值
d = str(c).replace(' ', "") #删除空格
设定一个定时查询
import timedef sleeptime(hour, min, sec):return hour * 3600 + min * 60 + secsecond = sleeptime(2, 0, 0)
while 1 == 1:time.sleep(second)print("查询开始")c = cyq()c = [i for i in c if i != '']d = str(c).replace(' ', "")postEmail(d)
# 这是隔2小时执行一次
如果晚上已经睡觉了没法看爬虫结果,就可以再设定一个爬虫结果发送至个人邮箱(以QQ邮箱为例)
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.header import Headerdef postEmail(text):#第三方服务(qq)mail_host = 'smtp.qq.com' #因为我们要用qq邮箱mail_user = '你的qq账号' #账号mail_pws = 'xxx' #授权码(看下方教程)#登录smtp = SMTP_SSL(mail_host) #实例化smtp.ehlo(mail_host)smtp.login(mail_user,mail_pws)#登录#我和对方的邮件地址my_mail = 'xxxxxxx@qq.com' #自己的邮箱地址her_mail = 'xxxxx@163.com' #要发送的邮箱地址#写入的内容cont = text#标题title = '查重报告'#内容格式化msg = MIMEText(cont,'plain','UTF-8') #plain为txt格式,如果直接写txt的话,会被检测为垃圾邮箱msg['Subject'] = Header(title,'UTF-8') msg['From'] = "xxxxx@qq.com" #这里有填写您的邮箱地址格式,对方才会知道发件人是谁,要不然对方默认为(无发件人)msg['To'] = '我的好友' #这个要注意!这里只能填字符串,如果填其他的数据类型就会报错!smtp.sendmail(my_mail, her_mail, msg.as_string())# smtp.quit()smtp.quit() #关闭SMTP,邮箱信息传输postEmail("报告处理中")
其中授权码可以在qq邮箱里(设置→\to→帐户)找到
点击开启后就会生成授权码,复制进代码里即可
测试结果
早上起来看一下邮箱就知道结果出来了没有
爬虫自动定时获取查重结果并将结果发送至指定邮箱相关推荐
- mysql 自动备份发送,Centos定时自动备份MySQL数据库并发送至指定邮箱
在Centos中使用Cron定时自动备份mysql数据库并通过Mutt发送到指定Gmail邮箱,利用Gmail垃圾邮件策略实现定时删除 { No.1 编写Shell 文件 } // Path /roo ...
- Linux开机自动获取本机公网IP并发送至指定邮箱
前言 当我们需要远程连接自己的Linux计算机时,可以使用ssh命令,但是需要我们获取目标计算机的公网ip.以下是使用Python实现的开机自动获取本地并发送至指定邮箱的小脚本. 实现步骤 1.引入库 ...
- 【爬虫】每天定时爬取网页小故事并发送至指定邮箱
看题目 ,需要实现三部分工作,第一部分为爬取网页小故事,第二部分为发送至指定邮箱,第三部分为定时启动程序.爬取网页内容可以使用BeautifulSoup库实现,发送邮件可以使用smtplib库实现,定 ...
- b站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发)
BiLiBiLi Time: 2020年11月6日19:44:58 Author: Yblackd BiLiBiLi BiLiBiLi 介绍 软件架构 安装教程 使用说明 源码下载 BiLiBiLi ...
- 数据库统计结果每日定时发送到指定邮箱
环境RHEL 5 首先安装sendEmail 1.下载SendEmail安装包 wget http://caspian.dotconf.net/menu/Software/SendEmail/send ...
- 【JavaWeb 爬虫】Java文本查重网页版 爬取百度搜索结果页全部链接内容
! ! 更新:增加了网页过滤判断,只允许域名包含blog,jianshu的网站通过 小技巧 Java中InputStream和String之间的转换方法 String result = new Buf ...
- python自动生成企业名称查重脚本。
本篇文章主要讲解,利用python的faker 实现企业信息的取名和筛选. 日期:2021年11月24日 说明:仅供参考学习使用,请勿用于其他用途. 前置说明 1.安装faker :https://b ...
- 一种获取公网ip地址并发送邮件至指定邮箱的实现方法
背景 在之前一篇文章中介绍了利用路由器的端口映射功能实现内网穿透的方法. ubuntu SSH内网穿透 + Vscode远程访问 在实际的使用过程中,发现这一实现途径存在一些不足之处,即当 ...
- mysql自动导出查检数据发mail_centos7上定时将mysql数据导出并且发送到指定的邮箱...
一.安装sendmail和mutt yum -y install sendmail mutt mailx 二.利用163邮箱向外发邮件 vim /etc/mail.rc 加入最后一行即可,我用的是16 ...
- 清理AD过期对象,并将结果发送给指定管理员
需求 需求为清理AD中过期的帐号,本打算是直接清理90天未登录的帐号就可以了,结果领导又担心如果一些长期出差在外的人员怎么办,所以后面加了一个30天的邮箱判定,如果这个人90天未登录域,又30天未登录 ...
最新文章
- PHP“Cannot use object of type stdClass as array”
- xssfsheet removerow 剩下空白行怎么处理_你看不上的农业会计!我却凭借其账务处理,过上你求之不得的生活...
- air display的实践
- 使用TCP可靠吗?为什么可靠?
- 即时消息服务框架(iMSF)应用实例之分布式事务三阶段提交协议的实现
- Node 即学即用 笔记 思维导图
- cxf调用接口的几种方式_Java调用CXF WebService接口的两种方式实例
- Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标等
- 网络专业人士笔记(7~11章)
- ffmpeg(5):SDL相关学习
- 论文笔记_S2D.58_2018-ICRA-基于直接法的使用LiDAR稀疏深度的视觉-激光雷达SLAM
- 【自用】C语言15个简单程序
- 达梦数据库SQL语句执行
- android 焦点丢失,RecyclerView更新数据时焦点丢失(android bug)
- QTableWidget 合并单元格
- oa怎么修改服务器地址,致远oa如何设置服务器地址
- 日语日常信函书信写作范文(6篇)
- Machine Learning之高等数学篇(五)☞《偏导数与方向导数、梯度》
- css动画和js动画_CSS与JS动画:哪个更快?
- maven命令行下载依赖