爬虫实例——生猪价格爬取+部署到云服务器定时启动

文章介绍了如何使用Python进行数据爬取,包括分析网页链接和源代码,利用requests和lxml库提取数据,并将数据存储到MySQL数据库中。此外,还讲述了项目在阿里云轻量应用服务器上的部署过程,使用宝塔面板简化操作,并设置定时任务实现每日自动爬取。
摘要由CSDN通过智能技术生成

一、数据爬取

1.分析网页链接

界面截图:

主要爬取目标是网页中的生猪相关价格信息,首先分析一下网页的请求链接。

构造规则为:INDEX_URL+sort=2&s_id=0&c_id=1&cou_id=0&city_id=3136&mid=&lx=0&page=2

其中sort_id对应的是不同产品(生猪、仔猪等)代码,c_id后对应的是省份代码。根据这两点可以抓取各省每日生猪、仔猪、玉米等相关产品的报价。

2.分析网页源代码

接着对网页源代码进行分析,找到我们要抓取的数据究竟在哪。

打开网页开发工具,发现网页数据在源代码中直接加载出来,没有做一些加密或反爬处理:

可以看到,我们需要的数据都存在tbody节点中,其每个子节点中包含一行数据,每个数据都保存在一个td节点中。OK,定位了数据的位置可以开始编写代码了。

3.实例代码:

基本思路:

①使用requests请求页面

②使用Xpath进行解析

③将数据保存到mysql数据库中

#!/usr/bin/env python
# coding: utf-8

import requests
from lxml import etree
import pymysql
import datetime
import sys


date=datetime.datetime.now().date()#获取当日日期
#定义一个通用的爬取页面的方法
def scrape_index(url):
    global date
    result0=[]
    response=requests.get(url)
    html = etree.HTML(response.text)
    for j in range(3,33):
        result=[]
        result1=html.xpath('//tbody[1]/tr[{j}]/td[position()<6]/a/text()'.format(j=j))
        if str(date)!= str(result1[0]):#核对日期,只抓取本日数据
            break
        result.append(result1)
        result2=html.xpath('//tbody[1]/tr[{j}]/td/a/li[1]/text()'.format(j=j))
        result.append(result2)
        result=[n.replace('\xa0','').replace(' ','') for a in result for n in a ]
        result0.append(result)
    return result0

#定义保存数据到mysql数据库的方法
def save_data(data):
    db = pymysql.connect(host="localhost", user="*****", password='******', database="pigprice",charset="utf8")
    cursor = db.cursor()
    for i in range(len(data)):
        sql = "insert into pigprice.pig_price (date,province,city,product,varieties,price) values ('{a}','{b}','{c}','{d}','{e}','{f}')".format(a=data[i][0],b=data[i][1],c=data[i][2],d=data[i][3],e=data[i][4],f=data[i][5])
        cursor.execute(sql)
        db.commit()
    db.close()


if __name__=="__main__":
    #生猪
    for i in range(1,11):
#后面将项目部署到服务器上每日定时执行,这里只抓取前十页的数据就足够了。
        url="INDEX_URL+sort=2&s_id=0&c_id=9&cou_id=0&city_id=0&mid=&lx=0&page={i}".format(i=i)
        result_pig=scrape_index(url)
        if result_pig:
            save_data(result_pig)
    print('今日生猪数据爬取完成')
    sys.exit()

二、项目部署

1.服务器选择

为了方便,云服务器是个不错的选择。我用的是阿里云的轻量应用云服务器,海外版的相对便宜点,使用中确实能感受到比较明显的延迟,不过对这种小实例来说足够用了。

2.项目部署

服务器的初步配置和使用论坛中有许多博客都进行了讲解,这里不再赘述。进入云服务器,建议使用宝塔面板,操作较为简单。进入宝塔界面,接着安装好mysql数据库和python项目管理器:

将代码文件上传到服务器,然后进入python项目管理器,点击添加项目,配置好相关设置:

 点击确定后试运行一下,查看日志,确定代码可以正常运行后就可以暂停了。

3.定时爬取

进入计划任务界面,添加计划任务:

 设置好之后服务器就会在每天固定时间运行爬虫代码了,进入任务日志可以查看任务运行情况:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值