Ubuntu利用crontab+shell脚本实现Scrapy每日定时爬取网站

Ubuntu利用crontab+shell脚本实现Scrapy每日定时爬取网站

原创文章、码字不易,转载请注明出处和链接,谢谢!

 

1.环境保障

自己利用scrapy编写的智联招聘网站“大数据职位”爬虫

https://github.com/XinyaoTian/zhilian_Spider

利用git的clone命令将github上的命令克隆至服务器的/root下。该项目的克隆位置为  /root/zhilian_Spider

【注意!】若想要在Ubuntu上运行该项目,请先安装Anconda2,scrapy以及pymongo库。

 

2.使用定时器

使用流程:

A.安装crontab

$apt install cron

 

B.开通并开启cronie后台服务

$sudo systemctl enable cron.service; sudo systemctl start cron.service

 

C.编写用于定时执行的shell脚本

$vi cron_zhilian.sh

 

D.编写cron_zhilian.sh

# 这段代码的意思是

export PATH=$PATH:/root/anaconda2/bin    # 导入 anaconda2 的 python 内核

cd /root/zhilian_Spider/    # 进入zhilian_Spider路径

nohup scrapy crawl OverviewSpider >> OverviewSpider.log 2>&1 &   # 运行爬虫
# 保存退出

 

E.编辑crontab定时任务

$crontab -e 

 

F.在MyCrontab中写入如下内容

# 命令格式为:<分钟> <小时> <日> <月份> <星期> <命令>

# 这段命令的意思是,每天的3点10分,利用 /bin/sh 中的命令执行 /root/Crontabs/cron_zhilian.sh 这个shell文件

10 3 * * * (/bin/sh /root/Crontabs/cron_zhilian.sh)

# 保存退出

 

G.查看定时任务情况,如果设置成功即可查看到相应任务

$crontab -l

 

3.日志管理

上述内容全部编辑好了后,发现ubuntu的/var/log/下面没有crontab的日志,原因是因为ubuntu默认没有开启crontab的日志功能,执行如下操作:

$vi /etc/rsyslog.d/50-default.conf 

 

将cron.*这一行前的注释打开:

image

 

然后重启

$sudo  service rsyslog  restart

 

最后就可以查看crontab的日志了

$tail –f  /var/log/cron.log

 

以上就是本文的全部内容,感谢您的阅读。希望对您有所帮助。

### 如何在 Ubuntu 系统中设置和运行爬虫程序 #### 安装必要的软件包 为了在 Ubuntu 上成功运行爬虫程序,首先需要确保系统已安装所需的依赖项。可以通过 `apt` 命令来完成这些基础环境的搭建。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install python3-pip python3-venv screen -y ``` 上述命令会更新系统的软件源列表并升级现有软件包,同时安装 Python 的 pip 工具以及虚拟环境支持模块[^1]。 #### 创建项目目录结构 建议创建专门的工作目录用于存放爬虫脚本及相关资源: ```bash mkdir ~/crawler_project cd ~/crawler_project/ python3 -m venv env source env/bin/activate pip install --upgrade pip setuptools wheel scrapy requests beautifulsoup4 ``` 这里通过 `virtualenv` 构建了一个隔离的开发环境,并安装了一些常用的库如 Scrapy 和 BeautifulSoup 来帮助编写高效的网络爬虫。 #### 编写简单的爬虫示例 下面是一个基本的 Python 爬虫例子,它可以从指定网站抓取数据并将结果保存到本地文件中。 ```python import os from bs4 import BeautifulSoup as soup import requests def fetch_data(url, output_file="output.txt"): try: response = requests.get(url) page_soup = soup(response.text, 'html.parser') with open(output_file, "w") as f: for item in page_soup.find_all('a'): link = item.get('href') if link and not link.startswith('#'): f.write(f"{link}\n") print("Data fetched successfully.") except Exception as e: print(f"Error occurred while fetching data: {e}") if __name__ == "__main__": url_to_scrape = input("Enter URL to scrape:") fetch_data(url_to_scrape) ``` 此代码片段定义了一个函数 `fetch_data()` ,该函数接受目标网址作为参数,解析 HTML 文档中的所有链接,并将其存储在一个文本文件里[^2]。 #### 使用 Screen 实现后台持续运行 当希望让爬虫能够在无人值守的情况下长期工作时,可以利用 GNU Screen 或 tmux 等终端复用器实现这一点。以下是具体的操作指南: 启动一个新的 screen session 并命名以便识别: ```bash screen -S crawler_session ``` 接着,在这个新打开的 shell 中执行刚才编写的爬虫脚本: ```bash python main.py ``` 最后按 Ctrl+A 再按 D 键组合键脱离当前 session 。此时即使关闭 SSH 连接也不会影响正在运行的任务进程。 #### 配置定时任务与状态通知 为了让整个流程更加自动化,还可以借助 cron 表达式安排定期触发爬虫作业;另外也可以集成邮件服务功能,在每次完成一定量的数据采集之后主动告知管理员最新进展状况[^3]。 ```bash crontab -e # 添加如下条目以每天凌晨两点钟自动启动一次爬虫 0 2 * * * /path/to/env/bin/python /home/user/crawler_project/main.py >> log.log 2>&1 ``` 以上就是关于如何在 Ubuntu 下部署并维护一套完整的爬虫解决方案的大致步骤概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值