必威体育Betway必威体育官网
当前位置:首页 > IT技术

scrapy爬虫实践之抓取拉钩网招聘信息(1)

时间:2019-10-08 14:10:00来源:IT技术作者:seo实验室小编阅读:77次「手机版」
 

拉钩网招聘

趁着学习计划空白的时间,我决定自己创建一个project练手爬虫,刚好可以实践之前学习过的scrapy

项目内容

1.抓取拉钩网下,关键字为【数据分析】【上海】的所有招聘信息

2.将抓取的信息保存到本地数据库

3.对抓取到的信息进行数据清洗

4.对数据进行分析,包括筛选出符合需求的信息,并给出具体的可视化结果与分析结论

使用工具:仅限使用scrapy

项目拟定好后,首先进入My_Test工作目录,创建爬虫项目

scrapy startproject newlagou

然后进入建立好的项目目录中,建立自己的爬虫。新建的文件在spider目录下,实际上这个爬虫文件也可以手动建立

scrapy genpider zhaopingye lagou.com

随后,通过上网参考其他大神的代码,完善自己的爬虫项目。

首先,在items中创建自己想要爬取的数据内容,这个地方暂时只创建了一项,我想要获取搜索“商业数据分析”后弹出的清单中所有的超链接(为之后爬取每一个页面做铺垫)

class NewlagouItem(scrapy.Item):
    job_web = scrapy.field()
    pass

pipelines暂时不设置。(事实上,在学习的过程中设置过了pipeline,这个文件可以帮助你更好的保存爬取出的数据)

settings的设置比较重要,这个地方要设置好防爬取的一些内容,包括headers和爬取速率、反重定向等。这个地方的坑比较多,还需要慢慢填。目前设置了爬取间隔为15s,之前设置的3s,爬取5个页面后就会被迫重定向到登录页。考虑过使用selenium模拟浏览器,暂时还不能很好的解决该问题。


BOT_NAME = 'newlagou'

SPIDER_MODULES = ['newlagou.spiders']
NEWSPIDER_MODULE = 'newlagou.spiders'

# Crawl responsibly by identifying yourself (and your website) on the user-agent
# USER_AGENT = 'lagouSpider (+http://www.yourdomain.com)'

# Obey robots.txt rules,
# Scrapy 默认是遵守爬虫准则的,即ROBOTSTXT_OBEY = True,如果遵守爬虫准则的,是不能用Scrapy来爬取的,这时需要把ROBOSTSXT_OBEY=False,也就是不遵守它的规则,一般我们都是不遵守他的规则。
ROBOTSTXT_OBEY = False

# 报那些状态错误,就把错误加上,允许这种错误,上面报的是403,就把403加入。
HTTPERROR_ALLOWED_CODES = [403, 302]

# 禁止被重定向
REDIRECT_ENABLED = False



DEFAULT_request_HEADERS = {
    'Accept': 'text/html,APPlication/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, sdch, br',
    'Accept-Language': 'zh-CN,zh;q=0.8',
    'cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
   # 'referer': 'https://www.lagou.com/',
    'Host': 'www.lagou.com',
    'User-Agent': 'Mozilla/5.0 (windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4482.400 QQBrowser/9.7.13001.400'
}

# configure maximum concurrent requests performed by Scrapy (default: 16)
# CONCURRENT_REQUESTS = 32

# Configure a delay for requests for the same website (default: 0)
# See https://doc.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
# 设置延迟3秒,操作太快容易遭遇反爬虫
DOWNLOAD_DELAY = 15
# The download delay setting will honor only one of:
# CONCURRENT_REQUESTS_PER_DOMAIN = 16
# CONCURRENT_REQUESTS_PER_IP = 16

最后,我们设置主程序。name是唯一的,启动爬虫时它将会帮助我们识别启动的是哪一个程序。start_urls则形成了一个列表,爬虫会自动爬取这个列表里所有的网页内容。

parse函数是自定义的内容提取函数。首先定义item为自定义的爬取对象,ps为整个清单,当然了,其中含有很多个子p,下面的for循环就是要来遍历它。在循环中,使用xpath().extract()获取目标内容,即单个招聘信息对应的招聘页。

随后,使用一段代码进行格式重整,防止爬取到空数据,最后去除获取的数据两旁的空格,并将其传入item(item必须是一个字典或其他,不能是str)

最后使用一个yield回传数据。这个是比return厉害的,能够在传入数据后立即结束进程,防止内存占用。

import scrapy
from newlagou.items import NewlagouItem

class LagouSpider(scrapy.Spider):
    name = 'zhaopingye'
    allowed_domains = ['lagou.com']
    start_urls = [
        'https://www.lagou.com/zhaopin/shangyeshjufenxi/{}/?filterOption=3'.format(i) for i in range(1,31)
    ]  # 这里是我们开始爬取的网站
    def parse(self, response):
        item = NewlagouItem()
        ps = response.xpath('//*[@id="s_position_list"]/ul/li/p[1]')
        for p in ps:
            # 可以获得对应招聘页的超链接
            job_web = p.xpath('./p[1]/p[1]/a/@href').extract()

            job_web = job_web[0] if len(job_web) > 0 else '无数据'

            item['job_web'] = job_web.strip()

            yield item

至此,所有的程序编写完成,返回cmd命令行,输入

scrapy crawl zhaopingye -o data.json

开始运行自己的爬虫程序

如果顺利的话,我们就可以将所有目标数据爬取至本地目录下的json文件中。

我在这里遇到两个问题,首先是爬取到第17个页面时就开始返回302错误,这是被重定向至登录页的缘故,我把爬取间隔改到了15s还是不能规避这个问题,好蛋疼!于是我只好手动修改了爬取目标网页的范围,分两次爬取目标。

其次我发现,保存好的json程序不能load读取,几经周折后我发现,json数据库里竟然有缺失 = = 在某些地方缺失了,与[,我手动增加后终于可以load成list了

最后获取到的数据示例如下

[
{"job_web": "https://www.lagou.com/jobs/5527073.html"},
{"job_web": "https://www.lagou.com/jobs/5826763.html"},
{"job_web": "https://www.lagou.com/jobs/5545028.html"},
{"job_web": "https://www.lagou.com/jobs/5566843.html"},
{"job_web": "https://www.lagou.com/jobs/4876647.html"}
]

emm,今天各种撞墙,最终只完成了一样一点微小的工作,明天开始正式爬取招聘页的各项数据!~

相关阅读

网页中使用的特殊字体(webdings, wingdings 2)

前言对字体的相关介绍可以参考  网页中使用的字体介绍  经常在某些网页中看到一些特殊的效果:比如一个红色的圆圈, 一个

电脑网页打不开怎么回事但qq能用

http://jingyan.baidu.com/article/cdddd41c46531953cb00e1c7.html 工具/原料 电脑 第一步、清除DNS解析缓存 1我们的系统会

A5站长网正式更名为A5创业网打造创业资讯和服务平台

2016年3月28日,A5站长网正式更名为A5创业网,完成一个质的飞跃,面向互联网创业者打造出更为精准、更具权威性的创业资讯和服务平台。

拍拍网卖家团购经验分享

试问:怎样在拍拍团购这场大战中打一场胜仗?想必很多拍友们都会不知所云,那么针对此类活动的以往经验以及所带来的效果,精灵整理了一

尚品网破产,寺库、珍品网等奢侈品电商们还能走多远?

一张悄无声息的情况说明,宣告一个老牌奢侈品电商独角兽轰然倒下。8月7日,通过一则独家爆料信息,《每日经济新闻》的记者了解到尚品可

分享到:

栏目导航

推荐阅读

热门阅读