借助Python爬虫和服务器实现 博客站点url实时推送至百度

鳄鱼君

发表文章数:615

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » 经验教程 » 借助Python爬虫和服务器实现 博客站点url实时推送至百度

文章仅做参考,各自网站的博客url不一样,需要修改。主要就是通过Python的requests库实现url抓取,存放在urls.txt中,然后借助服务器(Centos)来实现定时curl推送,在Windows中是没有curl命令的,需要安装单独的包,这里不做解释,你直接在你的服务器上测试就可以。

使用curl命令进行自动推送URL,放到服务器上,设置定时任务,主要是这个思路,鳄鱼君也是第一次做,整理一下思路和方法,少不了来回推送测试,所以需要注意url的数量。

import requests,re,os,time
from lxml import etree
class PurlUrl():
    def __init__(self):
        self.headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0',}
        self.url='修改'
    def get_url(self,url):
        html=requests.get(url,headers=self.headers).content
        result=re.findall('<span>共 (.*?) 页</span>',html.decode(),re.S)[0]
        return result
    def all_url(self,num):
        for i in range(1,int(num)+1):
            url='修改/page/{0}'.format(i)
            html=requests.get(url,headers=self.headers).content
            tree=etree.HTML(html)
            for a in tree.xpath('//div[@class="content"]/article/a/@href'):
                yield a

    def start(self):
        num=self.get_url(self.url)
        file_path=os.getcwd()
        for url in self.all_url(num):
           with open(file_path+'/urls.txt' ,'a+') as f:
               f.write(url+'\n')
#PurlUrl().start() 抓取url



# 创建命令
cmd = ' curl -H "Content-Type:text/plain" --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=修改&token=修改"'
# 执行命令并获取输出结果
cmt_output = os.popen(cmd).readlines()

# 获取当前时间用于日志记录
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 获取原文件行数便于追加记录, 如果不存在则初始化为0
cnt_line = 0 if os.path.exists(os.getcwd() + '/web_log.txt') == False else len(
    open(os.getcwd() + '/web_log.txt', 'r').readlines())

# 以a+形式打开文件 追加写入
with open(os.getcwd() + '/web_log.txt', 'a+') as f:
    # 按格式和序号将提交日志写入文件
    f.write(str(cnt_line + 1) + '. ' + current_time + ' - result: ' + cmt_output[0] + '\n')

提取url保存到urls.txt中,需要针对不同的网页结构,所以这里不固定,博客的curl推送地址也不一样,需要注意。

通过服务器执行定时任务

确保你的服务器是Linux的,一般都不使用Windows的吧,我们需要创建定时任务,具体的定时方法可参考:Linux上运行Crontab定时任务。那么首先上传代码到服务器中,如果是xshell链接的话,可以使用yum -y install lrzsz,安装lrzsz,使用rz -y上传文件即可!

鳄鱼君的cron.daily文件是在/etc目录下的,这里是root用户登录的,这里不同目录下分别存放的是每天、每周、每小时等等执行的脚本文件。每天执行的话就是cron.daily,cd到对应的文件中,通过vim在其中创建shell脚本文件: vim curl_url,在该文件中输入以下命令,之后 :qw退出并保存。

python3 存放python代码的目录/ceshi.py

最后要让创建的shell脚本可执行,通过chmod修改权限(为了方便设为对所有用户都可执行)

sudo chmod a+x etc/cron.daily/cur_url

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《借助Python爬虫和服务器实现 博客站点url实时推送至百度》 发布于2020-04-15

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

4 + 5 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册