python中爬取到数据以item封装数据存储到mysql

例子:要求
1.安装mysql数据库.
在这里插入图片描述

2.安装pip install pymysql.
在这里插入图片描述
3.在爬虫项目中: 自定义item,封装爬取结果.
在这里插入图片描述
在这里插入图片描述

#coding=utf-8

import scrapy
from scrapy import Item,Field

#定义的类模型:
class JobItem(Item):
    #定义属性
    job_name = Field()
    salary = Field()
    endDate = Field()

4.在爬虫项目中: 自定义itemPipelines管道. 处理爬虫结果,并存储至mysql中.
在这里插入图片描述
在这里插入图片描述

创建完等会下写DataConvertPipeLine.py里面的内容

在这里插入图片描述

在这里插入图片描述
DataConvertPipeLine.py里面的内容

# -*- coding:utf-8 -*-
import scrapy
import json
from project1.items2.JobItem import JobItem
# import pymysql
class ZhilianSpiderSql(scrapy.Spider):
    name = 'sp4'   #爬虫名称
    start_urls = ['https://fe-api.zhaopin.com/c/i/sou?start=0&pageSize=90&cityId=664&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=java%E5%BC%80%E5%8F%91&kt=3&_v=0.28840206&x-zp-page-request-id=fa4f5603902d4862868b73556d18d3a3-1547777345528-592905']
    #函数: 解析智联招聘数据接口的数据.
    def parse(self, response):
        #解析数据接口的json格式数据. 得到需要的岗位信息:
        #解决:  需要提供json组件.
       json_body = json.loads(response.body)
       json_data = json_body.get("data")
       json_results = json_data.get("results")
       #遍历集合: results.
       for js in json_results:
           #封装数据到模型中:
              job1 = JobItem()
              job1["job_name"] = js["jobName"]    #这里的jobName对应的是json数据中的key值通过key值去除value值
              job1["salary"] = js["salary"]
              job1["endDate"] = js["endDate"]
              #返回存储:
              yield job1

在这里插入图片描述

#coding=utf-8
import scrapy
import pymysql
#自定义管道:
class DataConvertPipeLine(object):
    #如何定义管道: 一般通过重写父中方法的形式.进行管道定义.
    #open_spider(self , spider) / process_item(self, item, spider) / close_spider(self , spider)
    # def open_spider(self , spider):
    #     print '1开始准备管道处理 ~~~~~~~~~同时爬虫工作中!!!'
    #     pass
    #
    # #补充: str .decode("utf-8")  : 将字符串str遵循utf-8编码方式,转换成底层ascii码.实现存储,传递等.
    # #           decode:解码.字符-->ascii    encode:编码: ascii--->字符
    # def process_item(self, item, spider):
    #     #item参数: 即为管道中的数据:
    #     salary = item["salary"] #取出模型中的值.
    #     item["salary"] = salary,"/月".decode("utf-8") #处理后,重新赋值到模型中.
    #     print '2正在管道中处理item ~~~~~~~~~item此刻,来自于爬虫返回!!!'
    #     return item
    #
    # def close_spider(self , spider):
    #     print '3正在关闭管道处理~~~~~~~~~爬虫已经结束!!!'
    #     pass

    #开启连接:
    def open_spider(self,spider):
        #connect : 充当连接对象.
        self.connect = pymysql.Connect(
            # host、port、user、passwd、db、charset
            host="localhost",
            port=3306,
            user="root",
            passwd="root",
            db="iteams",
            charset="utf8"
        )
        #cur : 充当游标.
        self.cur = self.connect.cursor()
        pass

    #处理item数据,实现存储:
    def process_item(self , item , spider):
        #编写sql实现存储:  item数据的存储.
        # 新增mysql 的语句:  insert into zhilian (字段列表)  values  (' 3000, python工程师 )
        sql = "INSERT INTO zhilian(salary,job_name,endDate) VALUES(%s,%s,%s)"
        self.cur.execute(sql,(item["salary"],item["job_name"],item["endDate"]))
        #确认提交事务:
        self.connect.commit()
        pass

    #释放资源连接:
    def close_spider(self,spider):
        self.cur.close()
        self.connect.close()
        pass

在这里插入图片描述
注意字段属性类型要保持一致

运行项目
在这里插入图片描述

在这里插入图片描述
python中爬取到数据以item封装数据存储到mysql中

需求: 51job/智联招聘.带分页的爬取和数据的存储.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值