python anaconda scrapy爬取智联网的招聘信息

第一步:在一个想生成项目的目录下(我的是:D:\bigdata\)使用命令 scrapy startproject scrapyexample(目录名)

切到要创建项目的位置,cd 进入scrapyexample


第二步:在cmd控制台:输入scrapy genspider myscrapy www.qq.com(想要爬取的url,进入myscrapy中是可以换的)


第三步:将anoconda中安装的scrapy加载到pycharm中
路径:File -> Settings -> Project: bigdata46 -> Project Interpreter 
点击右上角的设置,add,点击选项:Exiting environment,选择anoconda 下python安装的位置
,一般就在安装目录anoconda/python.py。 

我的是D:\Anaconda3\python

第四步: 配置scrapy的debug:在run 或者 ,右边启动处edit configuration
1.配置Script path: D:\Anaconda3\Lib\site-packages\scrapy\cmdline.py
2.配置Parameters: crawl myscrapy(爬虫name的名字,很重要,在myscray.py文件中,name值是可以改的)

3.配置WorkingDirectory: D:\bigdata\scrapyexample 

第五步:在pycharm中打开D:\bigdata\scrapyexample ,可以看到目录结构

myscrapy.py:就是我编辑爬虫的主要文件

job.txt:是运行后生成的文件

items.py:    是要保存的栏目文件

pipelines.py: 是文件输出方式的文件

settings.py:我这里主要是在setting.py里设置'scrapyexample.piplines.ScrapyexamplePipeline':300

        从而可以输出

第六步:编辑myscrapy.py,获取爬取的内容,这里就直接贴了:

# -*- coding: utf-8 -*-
import scrapy

from scrapyexample.items import ScrapyexampleItem


class MyscrapySpider(scrapy.Spider):
    name = 'myscrapy'
    start_urls = [
        'https://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E6%9D%AD%E5%B7%9E&kw=java%E9%AB%98%E7%BA%A7&p=1&isadv=0']
    page_count = 0

    def parse(self, response):
        print("我的爬虫终于配好了当前页面是:" + str(self.page_count + 1))
        items = response.xpath('//div[@id="newlist_list_content_table"]/table')
        for item in items:
            url = item.xpath('.//td[@class="zwmc"]/div/a/@href').extract_first()
            if url is not None:
                print("url======" + url)
                yield scrapy.Request(url, self.detail_parse)
        self.page_count += 1
        if self.page_count < 10:
            next_page_url = response.xpath(
                '/html/body/div[3]/div[3]/div[3]/form/div[1]/div[1]/div[3]/ul/li[11]/a/@href')
            yield scrapy.Request(next_page_url.extract_first(), self.parse)

    def detail_parse(self, response):
        print("detail_parse:")
        title_xpath = '/html/body/div[5]/div[1]/div[1]/h1/text()'

        title = response.xpath(title_xpath).extract_first()
        require = ""
        content = ""

        require_path = '/html/body/div[6]/div[1]/ul'
        content_path = '//div[@class="tab-inner-cont"]'

        require_list = response.xpath(require_path)[0].xpath(".//text()")
        content_list = response.xpath(content_path)[0].xpath(".//text()")

        for item in require_list:
            require += item.extract().strip()

        for item in content_list:
            content += item.extract().strip()

        print(title)
        print(require)
        print(content)
        item = ScrapyexampleItem()
        item['title'] = title
        item['require'] = require
        item['content'] = content
        # 输出到控制台
        # print(item['title'], item['require'], item['content'])
        yield item

第七步:编辑items.py

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy


class ScrapyexampleItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()  # 标题
    require = scrapy.Field()  # 要求
    content = scrapy.Field()  # 内容

第八步:编辑pipelines.py

# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import codecs
import os

import pymysql
from pandas import json


class ScrapyexamplePipeline(object):  # 需要在setting.py里设置'scrapyexample.piplines.ScrapyexamplePipeline':300
    def process_item(self, item, spider):
        # 获取当前工作目录
        base_dir = os.getcwd()
        print("当前工作目录是:" + base_dir)
        fiename = base_dir + '/job.txt'   #这里定义输出的文件名
        # 从内存以追加的方式打开文件,并写入对应的数据
        with open(fiename, 'a', encoding='utf-8') as f:  # 这里必须写好编码utf-8,不然乱码,费了很久才搞定
            f.write(item['title'] + '\n')
            f.write(item['require'] + '\n')
            f.write(item['content'] + '\n\n\n')
        return item

 第九步:设置settings.py

ITEM_PIPELINES = {
    'scrapyexample.pipelines.ScrapyexamplePipeline': 300
    # 'scrapyexample.pipelines.JsonPipeline': 200
    # 'scrapyexample.pipelines.mysqlPipeline': 100
}

大功造成,运行scrapy crawl myscrapy

job.txt中的部分值:

高级JAVA开发(杭州萧山区)
职位月薪:15001-20000元/月工作地点:杭州发布日期:2018-06-14 10:42:39工作性质:全职工作经验:5-10年最低学历:大专招聘人数:3人职位类别:Java开发工程师
岗位职责:1、通信、电子工程、自动化、计算机及其相关专业本科及以上学历;2、具有5年以上相关软件的系统设计开发经验,参加过大中型系统开发工作3、精通J2EE技术平台,熟悉常见的JAVA开发框架(Spring、struts、Mybatis)并对其架构体系有较深刻的理解,掌握HTML、Javascript、XML、CSS、Ajax等;               4、熟悉Tomcat、WebLogic、WebSphere等应用中间件5、至少熟练掌握Maven、Gradle等构建工具中的一种6、有一定分布式、多线程及高性能的设计与编码及性能调优能力;7、掌握SQL,熟悉Oracle、Db2、Mysql等数据库中的一种或多种;8、良好的表达沟通能力,独立工作能力强,学习能力强、有ERP或者集团OA等软件开发的优先                                                                       9、能适应一定的加班。任职要求:1、负责开发项目的系统分析、需求分析、功能分析;2、负责软件项目的组织研发与实施、修改已有的系统方案;3、负责保证开发软件的质量和符合客户需求,提供个体测试和技术指导4、负责协同管理信息化项目核心技术问题的攻关和系统优化,协助解决项目开发过程中的技术难题;5、协助、指导工程师解决关键问题,对技术人员进行技术指导;交通参考:地铁2号线钱江世纪城B出口  步行500米左右工作地址:浙江杭州萧山区钱江世纪城民和路945号


JAVA高级工程师-杭州(投资事业部研一)
职位月薪:15000-25000元/月工作地点:杭州发布日期:2018-04-11 10:52:50工作性质:全职工作经验:3-5年最低学历:本科招聘人数:1人职位类别:高级软件工程师
岗位职责:参与投资交易系统的开发和设计工作,能够根据设计文档独立完成编码、测试工作,负责并参与方案讨论、技术调研及参与解决开发中的技术难题。任职要求:1、本科以上学历三年以上Java开发工作经验;2、精通J2EE技术平台,熟悉常见的JAVA开发框架(Spring、struts、Mybatis)并对其架构体系有较深刻的理解;3、精通Web程序开发,熟练掌握熟悉HTML、Javascript、Jquery、XML、CSS、Ajax,能编写前端控件,搭建前端框架;4、熟练使用Tomcat,熟悉WebLogic、WebSphere等应用中间件;5、熟练掌握Oracle、MySQL俩种以上数据库的编程,能对数据库性能进行一定优化;6、具备有良好的沟通能力和问题挖掘、分析解决能力;7、具有良好的责任心、学习能力、团队合作能力,能适应高强度的工作。工作地址:杭州市滨江区江南大道3588号恒生大厦


高级java工程师(在杭州萧山区工作)
职位月薪:10001-15000元/月工作地点:杭州发布日期:2018-06-14 10:42:39工作性质:全职工作经验:3-5年最低学历:本科招聘人数:3人职位类别:Java开发工程师
岗位职责:1、按照需求构建业务模型、流程、架构及数据库设计;2、按照需求完成业务功能开发及单元测试;3、编写相关技术文档;4、参与code Review及带领团队助理开发工程师的技术指导工作。任职要求:1、本科或以上学历,4年及以上JAVA开发经验;2、精通Java语言及J2EE体系结构,有大型项目开发经验者优先;3、熟悉MVC架构模式,精通Spring,SpringMVC,MyBatis等框架;4、熟悉Oracle、MySQL等主流数据库,熟练掌握SQL操作和调优;5、熟悉分布式系统的设计和应用,熟练使用MQ,REDIS,DUBBO等中间件及服务框架;6、具备较强的沟通和学习能力,有团队合作和敬业精神。工作地址:浙江杭州萧山区钱江世纪城民和路945号
 欢迎大家指正批评,我实现了josn,txt格式的输出,mysql数据部分有问题,有兴趣的朋友 可以访问:https://www.cnblogs.com/freeman818/p/7228976.html
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值