zoukankan      html  css  js  c++  java
  • python-scrapy爬取某招聘网站(二)

    首先要准备python3+scrapy+pycharm

    一、首先让我们了解一下网站

    拉勾网https://www.lagou.com/

    和Boss直聘类似的网址设计方式,与智联招聘不同,它采用普通的页面加载方式

    我们采用scrapy中的crawlspider爬取

    二、创建爬虫程序

    scrapy startproject lagou

    创建爬虫文件

    scrapy genspider -t crawl zhaopin "www.lagou.com"

    由此爬虫程序创建完毕

    三、编写爬虫程序

    出于演示和测试,我们这次只爬取一条数据。

    items文件

    import scrapy
    
    class BossItem(scrapy.Item):
        # 岗位名称
        jobName = scrapy.Field()

    zhaopin.py爬虫文件

    import scrapy
    from scrapy.linkextractors import LinkExtractor
    from scrapy.spiders import CrawlSpider, Rule
    from boss.items import BossItem
    
    
    class ZhipinSpider(CrawlSpider):
        name = 'zhipin'
        allowed_domains = ['www.lagou.com']
        start_urls = ['https://www.lagou.com']
    
        rules = (
            Rule(LinkExtractor(allow=r'com/zhaopin/w+/'), callback='zhilianParse', follow=False),  #采用正则匹配的方式,获取网页url
        )
    
        def zhilianParse(self, response):
            datas = response.xpath('//ul[@class="item_con_list"]/li')  #通过xpath方式获取要爬取的域
            for data in datas:  #逐层迭代
                item = BossItem()
                # 岗位名称
                item["jobName"] = data.xpath('//div//div/a/h3[1]/text()').get()  #定位爬取信息
                yield item  #rule会迭代所有的url不需要再写回调函数

    管道文件

    
    
    
    
    import json
    import os


    class BossPipeline(object):
    def __init__(self):
    self.filename = open("Boss.json", "wb")
    self.path = "G:imagesp"
    if not os.path.exists(self.path):
    os.mkdir(self.path)  #判断路径

    def process_item(self, item, spider):
    # 岗位名称
    jobName = item['jobName']
    js = json.dumps(dict(item), ensure_ascii=False) + " "

    self.filename.write(js.encode("utf-8"))
    return item

    def __close__(self):
    self.filename.close()

    配置settings文件

    DEFAULT_REQUEST_HEADERS = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
    }
    ITEM_PIPELINES = {
    'boss.pipelines.BossPipeline': 300,
    }
    LOG_FILE="log.log"  #放日志文件用的,可有可无
    ROBOTSTXT_OBEY = False

    四、启动爬虫

    scrapy crawl zhaopin

    爬取结果

     在第一篇文章中讲了如何存入mysql,这里我就不多赘述了,大家自行查阅。

  • 相关阅读:
    php中的短标签 太坑人了
    <转>让SVN用户能够修改自身密码的PHP页面
    配置Apache2 管理 SVN
    <转>Java 理论与实践: 正确使用 Volatile 变量
    <转>java中静态方法和非静态方法的存储
    分享:将业务系统页面嵌入到统一平台中(简易版)
    权限管理系统之字典(代码)管理
    权限管理系统之模块管理
    权限管理系统之用户管理
    轻松搞定Struts 2:三步走上手小入门
  • 原文地址:https://www.cnblogs.com/jake-jin/p/11978813.html
Copyright © 2011-2022 走看看