Python的scrapy之爬取boss直聘网站

news/2024/5/9 12:31:52/文章来源:https://blog.csdn.net/weixin_30834783/article/details/98815644

在我们的项目中,单单分析一个51job网站的工作职位可能爬取结果不太理想,所以我又爬取了boss直聘网的工作,不过boss直聘的网站一次只能展示300个职位,所以我们一次也只能爬取300个职位。

jobbossspider.py:

# -*- coding: utf-8 -*-
import scrapy
from ..items import JobbossItemclass JobbosspiderSpider(scrapy.Spider):name = 'jobbosspider'#allowed_domains = ['https://www.zhipin.com/']allowed_domains = ['zhipin.com']# 定义入口URL#start_urls = ['https://www.zhipin.com/c101010100/?query=python&page=1&ka=page-1']    #北京#start_urls=['https://www.zhipin.com/c100010000/h_101010100/?query=Python&ka=sel-city-100010000']   #全国#start_urls=['https://www.zhipin.com/c101020100/h_101010100/?query=Python&ka=sel-city-101020100']   #上海#start_urls=['https://www.zhipin.com/c101280100/h_101010100/?query=Python&ka=sel-city-101280100']     #广州#start_urls=['https://www.zhipin.com/c101280600/h_101010100/?query=Python&ka=sel-city-101280600']    #深圳#start_urls=['https://www.zhipin.com/c101210100/h_101010100/?query=Python&ka=sel-city-101210100']     #杭州#start_urls=['https://www.zhipin.com/c101030100/h_101010100/?query=Python&ka=sel-city-101030100']      #天津#start_urls=['https://www.zhipin.com/c101110100/h_101010100/?query=Python&ka=sel-city-101110100']       #西安#start_urls=['https://www.zhipin.com/c101200100/h_101010100/?query=Python&ka=sel-city-101200100']        #武汉#start_urls=['https://www.zhipin.com/c101270100/h_101010100/?query=Python&ka=sel-city-101270100']         #成都start_urls=['https://www.zhipin.com/c100010000/h_101270100/?query=python%E7%88%AC%E8%99%AB&ka=sel-city-100010000']  #爬虫工程师,全国# 定义解析规则,这个方法必须叫做parsedef parse(self, response):item = JobbossItem()# 获取页面数据的条数node_list = response.xpath("//*[@id=\"main\"]/div/div[2]/ul/li")# 循环解析页面的数据for node in node_list:item["job_title"] = node.xpath(".//div[@class=\"job-title\"]/text()").extract()[0]item["compensation"] = node.xpath(".//span[@class=\"red\"]/text()").extract()[0]item["company"] = node.xpath("./div/div[2]/div/h3/a/text()").extract()[0]company_info = node.xpath("./div/div[2]/div/p/text()").extract()temp = node.xpath("./div/div[1]/p/text()").extract()item["address"] = temp[0]item["seniority"] = temp[1]item["education"] = temp[2]if len(company_info) < 3:item["company_type"] = company_info[0]item["company_finance"] = ""item["company_quorum"] = company_info[-1]else:item["company_type"] = company_info[0]item["company_finance"] = company_info[1]item["company_quorum"] = company_info[2]yield item# 定义下页标签的元素位置next_page = response.xpath("//div[@class=\"page\"]/a/@href").extract()[-1]# 判断什么时候下页没有任何数据if next_page != 'javascript:;':base_url = "https://www.zhipin.com"url = base_url + next_pageyield scrapy.Request(url=url, callback=self.parse)'''
# 斜杠(/)作为路径内部的分割符。
# 同一个节点有绝对路径和相对路径两种写法。
# 绝对路径(absolute path)必须用"/"起首,后面紧跟根节点,比如/step/step/...。
# 相对路径(relative path)则是除了绝对路径以外的其他写法,比如 step/step,也就是不使用"/"起首。
# "."表示当前节点。
# ".."表示当前节点的父节点nodename(节点名称):表示选择该节点的所有子节点# "/":表示选择根节点# "//":表示选择任意位置的某个节点# "@": 表示选择某个属性
'''

items.py

import scrapyclass JobbossItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()job_title = scrapy.Field()  # 岗位compensation = scrapy.Field()  # 薪资company = scrapy.Field()  # 公司address = scrapy.Field()  # 地址seniority = scrapy.Field()  # 工作年薪education = scrapy.Field()  # 教育程度company_type = scrapy.Field()  # 公司类型company_finance = scrapy.Field()  # 融资company_quorum = scrapy.Field()  # 公司人数

pipelines输出管道:

class JobbossPipeline(object):def process_item(self, item, spider):print('职位名:',item["job_title"])print('薪资:',item["compensation"])print('公司名:',item["company"])print('公司地点:',item["address"])print('工作经验:',item["seniority"])print('学历要求:',item["education"])print('公司类型:',item["company_type"])print('融资:',item["company_finance"])print('公司人数:',item["company_quorum"])print('-'*50)return item

pipelinemysql输入到数据库中:

# -*- coding: utf-8 -*-
from week5_day04.dbutil import dbutil# 作业: 自定义的管道,将完整的爬取数据,保存到MySql数据库中
class JobspidersPipeline(object):def process_item(self, item, spider):dbu = dbutil.MYSQLdbUtil()dbu.getConnection()  # 开启事物# 1.添加try:sql = "insert into boss_job (job_title,compensation,company,address,seniority,education,company_type,company_finance,company_quorum)values(%s,%s,%s,%s,%s,%s,%s,%s,%s)"#date = []#dbu.execute(sql, date, True)dbu.execute(sql, (item["job_title"],item["compensation"],item["company"],item["address"],item["seniority"],item["education"],item["company_type"],item["company_finance"],item["company_quorum"]),True)dbu.commit()print('插入数据库成功!!')except:dbu.rollback()dbu.commit()  # 回滚后要提交finally:dbu.close()return item

在settings.py中开启如下设置

SPIDER_MIDDLEWARES = {'jobboss.middlewares.JobbossSpiderMiddleware': 543,
}DOWNLOADER_MIDDLEWARES = {'jobboss.middlewares.JobbossDownloaderMiddleware': 543,'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None, # 这一行是取消框架自带的useragent'jobboss.rotateuseragent.RotateUserAgentMiddleware': 400
}ITEM_PIPELINES = {'jobboss.pipelines.JobbossPipeline': 300,'jobboss.pipelinesmysql.JobspidersPipeline': 301,
}LOG_LEVEL='INFO'
LOG_FILE='jobboss.log'#最后这两行是加入日志

最后启动项目,可以在pycharm自带的terminal中输入 :scrapy crawl 爬虫文件的名称

也可以创一个小的启动程序:

from scrapy.cmdline import executeexecute(['scrapy', 'crawl', 'jobbosspider'])

爬虫启动结果:

数据库中的数据如下:

 

以上就是爬取boss直聘的所有内容了

 

转载于:https://www.cnblogs.com/yuxuanlian/p/9877513.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_746826.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET网站部署问题集

这几天为了给客户演示我们的项目&#xff0c;发现原来程度在开发环境和部署环境中还不太一样&#xff0c;原本在开发环境中程度运行的好好的&#xff0c;而部署后装在服务器则可能产生不少的错误。因此记录下所遇到的问题&#xff0c;方便以后查询同时也希望能帮遇到相关问题的…

多屏设备网站设计

2019独角兽企业重金招聘Python工程师标准>>> 解决方案&#xff1a; 不同域名 为不同设备屏幕编写代码 相同域名 判断设备类型选择不同的视图 自适应网页设计 转载于:https://my.oschina.net/u/190049/blog/173248

一个在线学习正则表达式的网站

今天发现了一个不错的网站regexr.com&#xff0c;可以在线学习正则表达式。 如图&#xff0c;网站左边包含了常用的正则表达式&#xff0c;我们可以随时参考&#xff0c;右边是一些示例文字&#xff0c;英文段落、电话号码、网址、电子邮箱地址等都有。网站上面可以输入正则表达…

瞬时响应:网站的高性能架构

原文地址&#xff1a;http://blog.csdn.net/taochangchang/article/details/14105327 什么叫高性能的网站&#xff1f; CDN全称Content Delivery Network&#xff0c;即内容分发网络。腾讯提供的CDN服务与一般意义上的CDN服务是一样的&#xff0c;旨在将网站的静态内容发布到最…

云瓣影音网站微信端(已开源)

随着该项目的发布到线上(小打小闹)&#xff0c;即将又要开启另一段崭新的旅程。强迫自己停下来写写所学所得&#xff0c;个人认为总结和分享是一种很棒的学习方式。那让我们先来瞧瞧项目长的什么样。如果着急要源码的朋友&#xff0c;可以下拉到最后~~ 微信端部分展现 从微信端…

jitter 如何优化网络_网络推广如何做好网站SEO优化

网络推广做好网站整站SEO优化的方式有很多&#xff0c;如何才能做好SEO优化&#xff1f;一、定位网站关键词SEO给一个网站刚开始做优化的时候&#xff0c;不是立马就设置关键词&#xff0c;而是先分析该网站主要是做什么产品/服务。知道网站的目的是做什么&#xff0c;是卖产品…

如何把自己的网站部署在网上_新手如何自己建网站?

在当前&#xff0c;生活上很多事情已经和互联网息息相关了&#xff0c;每个我们都会网上浏览各种网站&#xff0c;新闻网站看新闻&#xff0c;购物网站在线购买&#xff0c;视频网站可以看视频&#xff0c;各种类型的网站基本都会有&#xff0c;企业建网站为了宣传和提供服务&a…

移动建站平台

搜狐快站是一个很不错的移动建站平台&#xff0c;而且很多功能现在都免费了。这个消息&#xff0c;对于我们这些草根创业者来说&#xff0c;无疑是天上掉了一个大馅饼砸到了我们的头上。既然馅饼掉到了俺们的头上了&#xff0c;咱们就吃了吧。对于搜狐快站&#xff0c;我就不和…

网站刷关键词_百度关键词指数怎样刷,怎么样刷关键词的权重?重庆百度快照排名...

我们在做网站优化的时候&#xff0c;通常会去看关键词的百度指数&#xff0c;选择那些有指数的关键词来重点优化。虽然原则上百度指数是自然形成的&#xff0c;但是我们通过某些方式&#xff0c;也能够有效的刷百度指数。本文重点给大家介绍下百度关键词指数怎样刷&#xff0c;…

unbantu下安装mysql_「ubuntu安装mysql」五:在Ubuntu 16.04下安装MySQL - seo实验室

ubuntu安装mysql1&#xff0c;首先执行下面三条命令&#xff1a;执行第一条命令&#xff1a;sudo apt-get install mysql-server如下图&#xff1a;输入 y &#xff0c;下载安装时会出现要求设置密码的界面&#xff1a;输入自己想设置的密码&#xff0c;之后再次输入确认密码。…

关注经典:CSS Awards 获奖网站作品赏析《第一季》

每天都有很多新的网站推出&#xff0c;其中不乏一些设计极其优秀的作品。这个系列的文章&#xff0c;我为大家挑选了2012年赢得 CSS Awards 大奖的50个最佳网站。这些鼓舞人心的网站作品代表了网页设计的最高水平&#xff0c;相信你可以得到很大的启发。 您可能感兴趣的相关文章…

ios图片放大之后如何不模糊_几个图片处理的网站

图片来源 &#xff1a;http://pexels.com在制作PPT时候我们会常常遇到以下的问题&#xff1a;问题1&#xff1a;有了一张原图&#xff0c;想找一张像素更高的图片&#xff1b;问题2&#xff1a;使用的图片像素太低、尺寸太小、模糊等&#xff1b;问题3&#xff1a;使用的图片太…

node mysql 搭建博客_用Node ejs模板 和Mysql搭建一个 个人博客网站基础

koa2-blog本项目是采用koa2框架制作的开源blog系统如果对您有帮助&#xff0c;您可以点右上角 "Star" 支持一下 谢谢&#xff01; ^_^如果你觉得对你有帮助&#xff0c;可以点击folk&#xff0c;或者follow一下&#xff0c;我会不定时跟新一些有趣的东西.~~~ 0.0koa2…

微软推出一个非常有趣的网站—— How-old.net 看照片猜年龄!

周末休闲一下啊&#xff01;&#xff01;微软推出一个非常有趣的网站—— How-old.net 看照片猜年龄&#xff01;这是由微软机器学习团队的工程师们开发的一个“年龄测试”的新玩意&#xff0c;通过图像脸部识别和大数据分析&#xff0c;可以快速识别出照片中的人的性别和年龄&…

电子商务网站-数据库设计

转载 陈小龙哈 2015-07-22 13:58:39 评论(0) 496人阅读 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104…

9个免费的矢量图网站

寻找一些特别的&#xff0c;为众所不知的矢量图网站不是一件容易的事情&#xff0c;又要高质量&#xff0c;又要免费使用&#xff0c;尽管鱼和熊掌不能兼得&#xff0c;但是谁叫我们碰到了互联网时代呢&#xff0c;谁叫我们知道一句台词&#xff1a;一切皆有可能呢&#xff01;…

网页SEO

2019独角兽企业重金招聘Python工程师标准>>> 1.SEO简介&#xff1a;Search Engine Optimization 。 2.内容上的SEO: a):网站标题、关键字、描述 . b)网站内容优化 c):Robot.txt文件 d)添加外部链接 3.编码上的SEO.(网站结构布局优化&#xff0c;网页代码优化)…

解决方案下显示的网站名称被追加编号的问题解决方法

问题描述 只看标题 大家是不是觉得有点不知所以&#xff1f;好吧&#xff0c;直接上图&#xff0c;大家请往下看。 如图中所示&#xff0c;我用VS2012编辑器添加一个解决方案[TestSolution],接着我先添加一个网站[Test],然后因为路径选择不对&#xff0c;就把站点文件删除重建&…

11月第1周网络安全报告:被篡改.COM网站占74.6%

IDC评述网&#xff08;idcps.com&#xff09;11月18日报道&#xff1a;根据CNCERT抽样监测结果和国家信息安全漏洞共享平台&#xff08;CNVD&#xff09;发布的数据得悉&#xff0c;在11月第1周&#xff08;2015-11-02至2015-11-08&#xff09;期间&#xff0c;我国互联网网络安…

SEO

2019独角兽企业重金招聘Python工程师标准>>> 搜索引擎优化&#xff08;SEO&#xff09;是一种利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式。SEO是指为了从搜索引擎中获得更多的免费流量&#xff0c;从网站结构、内容建设方案、用户互动传…