***本文章为个人学习记录***

目录

一、解析网页数据

二、items.py的编写

三、pipelines的编写

四、查看已爬取到的数据


一、解析网页数据

通过rules对相应的网页进行指定爬取,接着回调方法callbackparse_item对数据进行解析。解析数据通过itemloader逐个解析。

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rulefrom MySpider.utils.common import get_md5 # 提取字符串中的数字
from MySpider.items import liepinJobItemLoader,liepinJobItem # itemloaderclass LiepinSpider(CrawlSpider):name = 'liepin'allowed_domains = ['www.liepin.com']start_urls = ['https://www.liepin.com/']rules = (Rule(LinkExtractor(allow=("career/.*",)), follow=True),Rule(LinkExtractor(allow=("zhaopin/.*",)), follow=True),Rule(LinkExtractor(allow=("lptjob/.*",)),follow=True),Rule(LinkExtractor(allow=r'job/\d+.shtml'), callback='parse_item', follow=True),)def parse_item(self, response):item_loader = liepinJobItemLoader(item=liepinJobItem(),response=response)item_loader.add_xpath("title","/html/body/section[3]/div[1]/div[1]/span[1]/text()")item_loader.add_value("url",response.url)item_loader.add_value("url_object_id",get_md5(response.url))item_loader.add_xpath("salary","/html/body/section[3]/div[1]/div[1]/span[2]/text()")item_loader.add_xpath("job_city",'/html/body/section[3]/div[1]/div[2]/span[1]/text()')item_loader.add_xpath('work_years','/html/body/section[3]/div[1]/div[2]/span[3]/text()')item_loader.add_xpath('degree_need','/html/body/section[3]/div[1]/div[2]/span[5]/text()')crawl_tags =  response.xpath('/html/body/main/content/section[2]/dl/div/ul/li/text()').extract()item_loader.add_value('tags',",".join(crawl_tags))job_advantage = response.xpath('/html/body/section[4]/div/div[1]/span/text()').extract()item_loader.add_value('job_advantage',",".join(job_advantage))item_loader.add_xpath('job_desc','/html/body/main/content/section[2]/dl[1]/dd/text()')item_loader.add_xpath('job_addr','/html/body/main/aside/div[2]/div[2]/div[4]/span[2]/text()'or'/html/body/main/aside/div[3]/div[2]/div[3]/span[2]')item_loader.add_xpath('company_name','/html/body/main/aside/div[2]/div[1]/div[1]/div[1]/text()')job_item = item_loader.load_item()return job_item

二、items.py的编写

编写get_inset_sql()函数写sql语句,后返回插入语句和参数(insert_sql,paramspipelines,后异步导入mysql库。

class liepinJobItem(scrapy.Item):# 猎聘网职位信息title  = scrapy.Field()url = scrapy.Field()url_object_id = scrapy.Field()salary = scrapy.Field()job_city = scrapy.Field()work_years = scrapy.Field()degree_need = scrapy.Field()job_advantage = scrapy.Field()job_desc = scrapy.Field()job_addr = scrapy.Field()company_name = scrapy.Field()tags = scrapy.Field()crawl_time = scrapy.Field()def get_insert_sql(self):insert_sql = """insert into liepin(title,url,url_object_id,salary,job_city,work_years,degree_need,job_advantage,job_desc,job_addr,company_name,tags,crawl_time) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"""crawl_time=datetime.datetime.now().strftime(SQL_DATETIME_FORMAT)params = (self['title'],self['url'],self['url_object_id'],self['salary'],self['job_city'],self['work_years'],self['degree_need'],self['job_advantage'],self['job_desc'],self['job_addr'],self['company_name'],self['tags'],crawl_time)return insert_sql,params
# 连接MySQL的参数
MYSQL_HOST = "localhost"
MYSQL_DBNAME = 'article_spider'
MYSQL_USER = "root"
MYSQL_PASSWORD = "123456"

三、pipelines的编写

do_insert函数中,获取Items中的liepinjobItem中的get_insert_sql两个参数,接着执行mysql语句将数据保存。

# 异步入Mysql库
class MysqlTwistedPipline(object):def __init__(self, dbpool):self.dbpool = dbpool@classmethoddef from_settings(cls,settings):# 登录参数在settings中dbparms = dict(# 连接Mysql库的参数(账户密码ip等host = settings['MYSQL_HOST'],db = settings['MYSQL_DBNAME'],user = settings['MYSQL_USER'],passwd = settings['MYSQL_PASSWORD'],charset = 'utf8',cursorclass = DictCursor,use_unicode = True,)dbpool = adbapi.ConnectionPool("MySQLdb", **dbparms)return cls(dbpool)def process_item(self, item, spider):query = self.dbpool.runInteraction(self.do_insert, item)query.addErrback(self.handle_error, item, spider)def handle_error(self,failure,item,spider):print(failure)def do_insert(self,cursor,item):insert_sql,params = item.get_insert_sql()cursor.execute(insert_sql, params) # 执行数据库语句,将数据存入SQL数据库中pass

四、查看已爬取到的数据

Python_Crawl_spider对招聘网进行爬取相关推荐

  1. [python爬虫]selenium模拟登录京东招聘网,爬取研发类,数据清洗,数据存储,终数据分析和可视化

    目录 引入包 模拟登陆京东网 利用XPath对网页源代码进行解析 数据清洗 每页数据以追加形式保存至csv文件 保存数据到MongoDB数据库,参数为字典组成的列表 数据分析与可视化 总函数 引入包 ...

  2. python爬取智联招聘网_python爬取智联招聘工作岗位信息

    1 # coding:utf-8 2 # auth:xiaomozi 3 #date:2018.4.19 4 #爬取智联招聘职位信息 5 6 7 import urllib 8 from lxml i ...

  3. 51job(前程无忧官网)1万条招聘信息的爬取

    以51job网上爬取的一万条电商类招聘信息为样本,具体分析该行业的就业前景.工作地点.平均薪资和任职要求等 本文主要通过词云图和可视化图表对数据进行展示描述 1.先上样本信息图(由于太多,只截了一部分 ...

  4. 新手菜鸟招聘网站数据爬取

    这里写自定义目录标题 准备工作 上代码 我踩过的坑 参考文献 python新手,第一次写爬虫,真是一把辛酸泪啊 对前程无忧 51job进行爬取,选择的关键字为大数据开发工程师和本科 一开始是想对这个网 ...

  5. python爬虫网络数据包_Python爬虫之多线程图虫网数据爬取(十六)

    Python爬虫之多线程图虫网数据爬取(十六) 发布时间:2019-05-14 10:11, 浏览次数:289 , 标签: Python 原创不易,转载前请注明博主的链接地址:Blessy_Zhu h ...

  6. 知网爬虫——爬取某个主题下的文章标题以及发表时间

    前几天帮朋友做了个知网的爬虫,爬取了"新闻传播"主题下的文章标题及发表时间:自己拖拖拉拉写了2天才写完,自己还是太弱了.个人认为这个作为一个练手的爬虫小项目还是不错的,于是写了主要 ...

  7. 多线程爬虫实战--彼岸图网壁纸爬取

    多线程爬虫实战–彼岸图网壁纸爬取 普通方法爬取 import requests from lxml import etree import os from urllib import requesth ...

  8. Scrapy入门、当当网商品爬取实战

    文章目录 一.如何创建Scrapy爬虫项目 二.Scrapy的一些指令说明 三.当当网商品爬取实战 一.如何创建Scrapy爬虫项目 (1) Win+R 打开cmd,假如我要在F盘的Scrapy文件中 ...

  9. 网易云爬取首页歌单里的所有歌曲

    网易云爬取首页歌单里的所有歌曲 前言:本文章仅供个人参考使用,非商用用途,其中参考了其他的文献资料,如有不妥之处,请联系本人邮箱:wurenjie8@163.com 思路:通过首页URL获取所有首页的 ...

最新文章

  1. 打印show attend and tell的解码器网络结构
  2. 关于real210开发板linux系统可能无法解析域名的问题解决方法
  3. sqlserver常用函数/存储过程/数据库角色
  4. java jpeg压缩解码_图片压缩(iOS)
  5. HDU-4793 Collision 计算几何 解方程
  6. 弄懂goroutine调度原理
  7. 计算机网络 全集视频
  8. eduline php5.3,index.php
  9. python抓取微信公众号文章_如何使用python3抓取微信公众号文章,了解一下?
  10. 直播系统源码,直播系统源码, 直播app系统源码
  11. python中水量_Python居然还能用于巨大的工程项目!比如三峡发电量估算系统!
  12. 计算机动画的应用 ppt,你也是幼教 用PPT制作识字动画
  13. 【Python爬虫】:模拟登录QQ空间
  14. vscode中建立vue项目
  15. ssd [Error] UnicodeDecodeError: 'gbk' codec can't decode byte 0x81 in position【已解决】
  16. Altium Designer挖空开槽填坑之board cutout
  17. GD32F103单片机设置时钟到108MHz,串口波特率错误的问题?
  18. js处理时间戳转成日期格式
  19. 采样频率和带宽的关系_ADI公司AD7380系列SAR ADC的片内过采样
  20. ffmpeg 为取经而来_清华,那个穿越百年而来的白衣少年

热门文章

  1. Android中MediaStore的介绍
  2. educoder-Spark GraphX—寻找社交媒体中的“影响力用户”
  3. c语言实现进制转换器
  4. 使用Python设置钉钉机器人和企业微信机器人的步骤
  5. 文件上传漏洞各种姿势分析
  6. SM1 SM2 SM3 SM4加密算法
  7. tinyumbrella 9(小雨伞)无法打开(Crash、自动关闭)的解决方法
  8. 不用学python,这个爬虫软件帮你完成80%的数据采集工作
  9. 6款人脸识别开源软件的简单使用
  10. Docker网络和存储管理