python 爬虫 如何通过scrapy框架简单爬取网站信息--以51job为例

本文介绍了如何使用Python的Scrapy框架来爬取51job网站信息。Scrapy是一个强大的爬虫框架,能加速下载速度并支持自定义中间件。文章详细阐述了从创建项目到运行爬虫的九个步骤,包括设置项目、编写爬虫、配置items、中间件和pipelines,以及如何处理头部和代理IP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scrapy框架三大优点:

  • Scrapy框架是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。
  • 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
  • Scrapy 可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

scrapy实现流程图:
在这里插入图片描述

scrapy各个模块简单介绍:
模块介绍

步骤:

1.打开pycharm3.6
2.打开terminal命令行输入’scrapy startproject 项目名’,就会建立一个scrapy项目的文件夹
3.建立scrapy主程序,爬虫主要过程都在这里实现,同样在命令行输入’scrapy crawl -t 文件夹名 url’这里url是要爬取的网址,黏贴进去,就会建立一个模板。
4.打开刚建立的py文件,填入网址,这里以51job为例
代码如下:


from scrapy.spider import CrawlSpider
from scrapy.selector import Selector
from ..items import Job51Item
from scrapy.http import Request
import  re
from copy import deepcopy


class Job51(CrawlSpider):
    name = 'job51'#与建立的py文件名相同
    url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,%25E4%25BA%25BA%25E5%25B7%25A5%25E6%2599%25BA%25E8%2583%25BD,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='

    start_urls = [url]
    #可以不用去设置settings文件,直接指定管道文件
    # custom_settings = {
    #     'ITEM_PIPELINES' : {
    #     # 'job51.pipelines.Job51Pipeline': 300,
    #     'job51.pipelines.saveToJson': 310
    #     #'job51.pipelines.saveToMongoDB': 320
    # }
    # }


    # 定义一个计数变量
    times = 0
    def parse(self, response):
        self.times+=1
        #response是下载器下载的网页内容
        selector = Selector(response)#创建selector对象

        item=Job51Item()

        parent = selector.xpath('//div[@id="resultList"]//div[@class="el"]')
        #print(parent)
        for each in parent:
        	#获取职位信息
            jobname = each.xpath('./p/span/a/@title').extract()
            jobsrc = each.xpath('./p/span/a/@href').extract()[0]
            companyname = each.xpath('./span[1]/a/text()').extract()
            address = each.xpath('./span[2]/text()').extract()
            money = each.xpath('./span[3]/text()').extract()
            ptime = each.xpath('./span[4]/text()').extract()
            #print(jobname,companyname,address,money,ptime)

            if money:
                money=money[0]
            else:
                money='面谈'
            item['jobname']=jobname[0]
            item['companyname']=companyname[0]
            item['address']=address[0]
            item['mone
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值