您当前的位置: 首页 >  Python

王同学在这

暂无认证

  • 0浏览

    0关注

    35博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【python爬虫】scrapy框架案例实现数据保存入MySQL

王同学在这 发布时间:2022-05-23 11:42:24 ,浏览量:0

文章目录
  • 🍟前言
    • 📕往期知识点
    • 🌷学习宝典
    • 🥽最终效果
  • 🍓开发准备
    • 🍉基本开发环境
    • 🍉scrapy项目的搭建
    • 🍉页面分析
  • 🍖scrapy实现代码部分
    • 💎settings部分
    • 💎starts部分
    • 💎items部分
    • 💎spider主要部分
    • 💎pipelines部分
  • 🥣总结

🍟前言

本章用scrapy框架进行岗位信息的保存,相信对于每个上班族来说,总要经历找工作,如何在网上挑到心仪的工作?如何提前为心仪工作的面试做准备?今天我们来保存招聘信息,助你能找到心仪的工作!

📕往期知识点

📕往期内容回顾

💡【python爬虫】纵横中文网python实战 💡【python教程】保姆版教使用pymysql模块连接MySQL实现增删改查 💡 selenium自动化测试实战案例哔哩哔哩信息至Excel 💡舍友打一把游戏的时间,我实现了一个selenium自动化测试并把数据保存到MySQL

在这里插入图片描述

🌷学习宝典

对于项目实战来说,那必定是需要一定的 Scrapy 的基础的,因此在编写项目之前再次推荐下 Scrapy 框架的中文官网: https://www.osgeo.cn/scrapy/intro/tutorial.html

有需要的随时可以回去看看。。。下面我们正式开始今天的话题:使用 Scrapy 实现工作信息存储。 在这里插入图片描述

🥽最终效果

还是老样子,先看一下最终的实现效果吧,保存到了csv和MySQL数据库中 在这里插入图片描述

在这里插入图片描述

🍓开发准备 🍉基本开发环境
  • pycharm
  • Python 3.8
🍉scrapy项目的搭建

1.创建项目:

scrapy startproject 项目名

2.然后cd 项目名称,进入项目

cd 项目名字

3.创建一个文件:

scrapy genspider 名称 域名

🍉页面分析

打开网址搜索需要查看的岗位信息(这里我已pytho岗位为例)。 在这里插入图片描述

需求信息,标题,公司,薪资,基本要求,这些信息都存储在页面源码div的li标签中,到时候解析数据找到全部div后遍历li提取信息即可。 在这里插入图片描述 翻页不难发现page代表的是页数 规律 page=2 page=3 page=4 一直往下 在这里插入图片描述

在这里插入图片描述

接下来进行代码实战

🍖scrapy实现代码部分 💎settings部分

设置机器人协议为False,增加一个管道类进行MySQL的存储,等相关主要操作

# 让终端显示指定类型的日志信息,只输出错误类型信息
LOG_LEVEL = 'ERROR'

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'

# Obey robots.txt rules
ROBOTSTXT_OBEY = False  # 机器人协议

# 俩个管道类,一个存储csv,一个存储MySQL
ITEM_PIPELINES = {
   'gxrc.pipelines.GxrcPipeline': 300,
   'gxrc.pipelines.mysqlPipeline': 301,
}

💎starts部分

在项目中自己新建一个py来进行项目的运行,不用在终端一直打命令

from scrapy import cmdline

#开启爬虫
cmdline.execute('scrapy crawl spider'.split(" "))
💎items部分

把需要提取的数据放进item中

import scrapy


class GxrcItem(scrapy.Item):
    # define the fields for your item here like:
    title = scrapy.Field()
    company = scrapy.Field()
    momey = scrapy.Field()
    company_text = scrapy.Field()
    wafir = scrapy.Field()
💎spider主要部分

在spider.py中主要进行的是数据提取并把结果交给管道。

import scrapy
from ..items import GxrcItem
import copy


class SpiderSpider(scrapy.Spider):
    name = 'spider'
    # allowed_domains = ['www.baidu.com']   # 域名
    start_urls = ['https://s.gxrc.com/sJob?keyword=python&schType=1&PosType=']

    page_num = 2

    # 解析
    def parse(self, response):
        # 列表
        all_data = []

        # 全部标签
        all_li = response.xpath('//*[@id="posList"]/div')
        # 遍历
        for i in all_li:
            items = GxrcItem()  # items
            items['title'] = i.xpath('string(./ul[1]/li[1]/h3/a)').extract_first()
            items['company'] = i.xpath('./ul[1]/li[2]/a/text()').extract_first()
            # 详情页
            details_url = 'https:' + i.xpath('./ul[1]/li[1]/h3/a/@href')[0].extract()



            # 发送请求详情页
            yield scrapy.Request(url=details_url,dont_filter=True,callback=self.get_details,meta={"items":copy.deepcopy(items)})

    # 详情页提取方法
    def get_details(self,response):
        # 获取item
        items = response.meta['items']
        # 提取信息
        items['momey'] = response.xpath('//*[@id="content"]/div/div[1]/div/div[1]/div[1]/div[2]/text()').extract()[0].replace(' ','').replace('\n','').replace('\r','')
        items['company_text'] = response.xpath('string(//*[@class="detail"])').extract()[0].replace('\n','')
        items['wafir'] = response.xpath('string(//*[@class="welfare-con con"]/ul)').extract()[0].replace(' ','').replace('\n','').replace('\r','')
        print(items)

        yield items  # 提交管道

        # 翻页
        if self.page_num             
关注
打赏
1650950381
查看更多评论
0.0451s