2019独角兽企业重金招聘Python工程师标准>>>

背景

这一次的通用爬虫跟以往默认的spider不一样,它的爬取可以通过正则将范围扩大,而且它也不注重那么细的内容,能爬尽量爬、不能爬就略过的思维,比较有意思。


独特之处

它的独特性主要表现在这几个地方:

  • 模板与默认爬虫模板不一样,在创建默认工程时用的命令是 scrapi genspider gxrc www.gxrc.com,而通用爬虫在创建工程时用的命令则是 scrapi genspider -t crawl gxrc www.gxrc.com,意思是指定crawl模板。
  • 配置要求不同,因为大规模爬取数据一般都是无需登录的网站,而且根据略过思维,对于重定向和超时还有爬取日志以及并发数、cookie禁用都是提供了配置,这些在官方文档都有记录。

Follow的坑

  • 我在开始爬取的过程中,因为不太熟悉crawlspider的follow规则,所以绕了几次弯路,后来才熟悉:
  • follow只跟进当前页面的url,(符合Rule正则的都跟进)
  • follow不会自动跟进全站url,因为第一条的存在,所以它是不会自动跟进全站的
  • Rule是个坑,strat_urls更加是个坑。

广西人才网

它也是很独特的,为什么这么描述呢:

  • 它在首页呈现的企业信息没多少,所以如果将首页url设置为start_urls,那么根据follow的坑,肯定是不能够全部抓取的。
  • 如果是进入子分类,比如能源行业、汽车行业、金融行业,那也是不行的,子类太多,而且子类进去以后也是单页仅仅显示10-20条企业信息,follow跟进这十几条数据后没有东西跟进,爬虫就会自动停止 finish
  • 那就必须找到所有企业的列表,然后根据列表进行翻页(其实跟之前的默认spider思路一样)

找企业列表

根据广西人才网的功能设定,要找到所有企业的列表,只需要在搜索栏处设定搜索范围为【公司】、选择城市【广西】,其他默认,点击搜索按钮【找工作】, 在所列出来的列表下方的翻页处点击任意页码,在浏览器获得页码url

http://s.gxrc.com/sEnt?schType=2&page=816

这样就可以构造页码了。


代码实现

spider代码里面主要是设置allowed_domains、start_urls、Rule和字段的获取:

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from ..items import GxrcItem,GxrcItemLoaderclass GxrcSpider(CrawlSpider):name = 'gxrc'allowed_domains = ['www.gxrc.com']  # 正式的企业信息url是在www域名下,而不是下方s_urls的s域名下,所以这里依然用wwwstart_urls = []for i in range(1, 815):""" 根据广西人才网页码范围  获取具体的企业列表 将url加入start_urls的列表,由scrapy自动取值进行爬取""" i = str(i)s_urls = "http://s.gxrc.com/sEnt?schType=2&district=1&page= %s" % (i)start_urls.append(s_urls)rules = (Rule(LinkExtractor(allow=r'/WebPage/JobDetail.aspx\?EnterpriseID=\d+$'),follow=True,callback='parse_company'),  # 设定url正则,符合正则的则进行爬取)

item里面主要是对进来的数据进行处理,比如去空格/去换行、提取数字、加密等:


import scrapy
import re
from scrapy.loader import ItemLoader
from scrapy.loader.processors import TakeFirst,MapCompose,Join""" 开始:定义数据处理方法 """def do_strip(value):""" 去空格/换行 """return value.strip()def keep_list(value):"""scrapy的图片下载url默认处理列表list格式,str会报错由于下方itemloaders设置了default_output_processor为TakeFirst所以这里需要定义一个直接返回的函数来覆盖output_processor,这样就可以保持list格式"""return valuedef get_url_id(value):""" 将url中的数字取出来 """match = re.search('\d+', value)if match:value = match.group(0)return int(value)""" 结束:定义数据处理方法 """class GxrcItemLoader(ItemLoader):""" 广西人才网企业信息itemloader """default_output_processor = TakeFirst()class GxrcItem(scrapy.Item):""" 广西人才网企业信息item序列化"""comp_url = scrapy.Field()comp_url_id = scrapy.Field(input_processor=MapCompose(get_url_id))comp_name = scrapy.Field(input_processor=MapCompose(do_strip))comp_desc = scrapy.Field(input_processor=MapCompose(do_strip))comp_tel = scrapy.Field()comp_contacts = scrapy.Field(input_processor=MapCompose(do_strip))comp_email = scrapy.Field(input_processor=MapCompose(do_strip))comp_website = scrapy.Field(input_processor=MapCompose(do_strip))comp_address = scrapy.Field(input_processor=MapCompose(do_strip))image_urls = scrapy.Field(output_processor=MapCompose(keep_list))image_path = scrapy.Field()

这一次在pipeline中要处理的事情比较多:

  • 下载图片
  • 自动识别图片中的电话号码
  • 将数据持久化,存储到Json文件中

这里就不公开处理的代码了,写完pipeline之后记得到settings中开启即可


settings配置

上面我写了scrapy为crawlspider提供了很多的配置,以加速下载,完成【能爬则爬,不能则略过】的行为,在settings.py中新增配置代码:

""" 通用爬虫优化配置 """
#REDIRECT_ENABLED = False  # 禁止重定向
DOWNLOAD_TIMEOUT = 15  # 减小下载超时
RETRY_ENABLED = False  # 禁用重试
COOKIES_ENABLED = False  # 禁止cookie
CONCURRENT_REQUESTS = 200  # 增加全局并发数
LOG_LEVEL = 'INFO'  # 降低log日志记录的级别 (如果设置这个,那爬取时候除了报错外,其他信息是看不到的)

其中重点是【重定向】、【日志】和【并发】:

  • 【重定向】 -- 它的目的是为了节省请求次数和爬取时间,对于重定向的目标做后置处理(除非您对跟进重定向感兴趣,否则请考虑关闭重定向。 当进行通用爬取时,一般的做法是保存重定向的地址,并在之后的爬取进行解析。 这保证了每批爬取的request数目在一定的数量, 否则重定向循环可能会导致爬虫在某个站点耗费过多资源。)
  • 【日志】 -- 它的目的是减少爬取时候的cpu开销和内存开销,能不记录的则不记录,如果设置了INFO级别,则只会显示DEBUG级别的信息及错误信息,一条条的爬取记录就不会显示了。
  • 【并发】 -- 它可以增加并发数量,一般来讲scrapy默认并发数32,文档里面写着并发可以先设定为100,根据cpu的占用率提高数值,最好的并发是占用cpu80%左右。我这里设置200才占用了40%的cpu。

这里我不能开启重定向,是因为广西人才网的企业列表是s,而真正的企业详情是www,它自动给了一个302的重定向,如果我开启了重定向,那么这里就会取不到任何的数据和信息,如果我不开启则能够正常取数据。


数据展示

这里展示一下抓取到的8000多条数据中的一小部分:

{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1100420", "comp_url_id": 1100420, "comp_name": "广西剑桥教育管理有限责任公司", "comp_desc": "闻名的剑桥:剑桥大学是全世界最顶尖的大学之一,产生了近百名的诺贝尔奖获得者,更是许多英国、欧洲及世界著名的科学家、作家、政治家诞生地。广西剑桥致力于传播剑桥大学的教育理念、教育思想、教育模式和教育方法,让更多中国人能站在世界民族之林和世界舞台做出卓越的成就而努力。", "comp_contacts": "张老师", "comp_email": "cambridge@163.com", "comp_website": "www.cambridge.org.cn", "comp_address": "广西大学正门城市便捷酒店8楼  三美分校:南宁三美学校对面城市便捷酒店10楼", "image_urls": ["http://vip.gxrc.com/Public/Phone/97C1B456-BBA0-4665-942A-AA39F7FA7653"], "image_path": "full/075d4d696a8ed286bd468a8fd4973034a8f0e3f6.jpg", "comp_tel": "07717\n\n \n\n313139"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1097914", "comp_url_id": 1097914, "comp_name": "南宁联发置业有限公司", "comp_desc": "联发集团有限公司成立于1983年10月,是一家以房地产和物业租赁为核心业务的大型房地产运营商,现注册资本21亿元人民币,总资产240亿元人民币,开发区域已涵盖厦门、桂林、南昌、南宁、重庆、武汉、天津、扬州、鄂州、漳州和莆田。公司肩负开发厦门经济特区的使命而生,伴随特区共同成长,并积极拓展全国版图。30多年来,公司坚守品质筑家的理想,与城市发展同行,根植十余城,为无数家庭营造超越不动产价值的幸福体验,融入并推动所在城市的提升与繁荣。截至目前,公司开发面积近1000万㎡,并拥有土地储备超600万㎡,同时已形成快速滚动发展与自主运营相结合的合理布局,持有物业面积超80万㎡。", "comp_email": "wlz@xudc.com", "comp_website": "www.lianfafc.cn", "comp_address": "南宁市青秀区长虹路12号", "image_urls": ["http://vip.gxrc.com/Public/Phone/C7A34103-9443-4513-A477-E5CDC5C0EC38"], "image_path": "full/8c2737cadc3184486c72c086f427d2339ea41eed.jpg", "comp_tel": ""}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=20671", "comp_url_id": 20671, "comp_name": "广西海格国际物流有限公司", "comp_desc": "广西海格国际物流有限公司总部设在南宁,隶属于深圳海格物流,在防城港、钦州、贵港等地设有分支机构,依托深圳海格雄厚实力和覆盖网络,利用北部湾港作为西南地区出海通道的优势,成立伊始,便以高起点、高定位、高品质为广大客户提国际国内海运、拖车、仓储、省内市内配送、多式联运、报关报检、船舶代理等物流服务,是北部湾港和西江水域等口岸最大的外贸进出口承运商,拥有多年国际危险品货运(赤磷、黄磷、磷酸等)和冷冻柜的专业操作经验,能够为西南地区各行业客户提供国内国际物流全程运作服务。", "comp_contacts": "丰小姐", "comp_email": "fengpingting@hercules-logistics.com", "comp_website": "www.hercules-logistics.com", "comp_address": "南宁市高新区总部路3号东盟企业总部基地2期8栋5楼", "image_urls": ["http://vip.gxrc.com/Public/Phone/F9494EC8-6AE7-49F5-92B3-F30AC043949A"], "image_path": "full/4d752b67bfce07ab3a7b2dadd9790c0ef39655c3.jpg", "comp_tel": "077172260666 , sass"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1103676", "comp_url_id": 1103676, "comp_name": "广西金汇通混凝土有限公司", "comp_desc": "广西金汇通混凝土有限公司是一家专业从事预拌商品混凝土生产和销售的企业,也是一家安全生产标准化三级企业,公司于2003 年1月3日正式注册成立,注册资金为3000万元人民币,净资产8576万元人民币,公司周转资金雄厚,资质类别为“预拌混凝土专业承包不分等级”。", "comp_contacts": "张主任", "comp_email": "175060534@qq.com", "comp_address": "广西南宁市兴宁区昆仑大道118号(金桥客运站附近22\\606\\803公交车到新城福利厂站下车即可)", "image_urls": ["http://vip.gxrc.com/Public/Phone/DECB268C-9941-4098-B28C-DF5D52FB0293"], "image_path": "full/15eb7a63d6a6b0dd9d1358d553c1f7bb2306ee30.jpg", "comp_tel": "6661936 15373199715"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1103412", "comp_url_id": 1103412, "comp_name": "柳城加美木业有限公司", "comp_desc": "柳城加美木业有限公司位于广西“龙城”柳州市柳城沙埔经济开发区,成立于2011年2月,注册资金4000万元人民币,总投资2.2亿元人民币,建筑面积23629m2,占地120亩,是柳城县招商局重点建设项目。公司临近拥有丰富林业资源的融安县、融水县、三江县,占据优越的地理位置。", "comp_contacts": "人力资源部 廖主管", "comp_email": "lcjmmy7012889@163.com", "comp_website": "www.lzjmjt.com/", "comp_address": "广西柳州市柳城沙埔工业园", "image_urls": ["http://vip.gxrc.com/Public/Phone/4386C8BC-42A6-471A-B899-F1F5AD0FEC79"], "image_path": "full/d72a375051cc0397188691cd97fd7a38effa9091.jpg", "comp_tel": "077277012339"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1103727", "comp_url_id": 1103727, "comp_name": "南宁市西乡塘区浩艺文化教育培训学校", "comp_desc": "我培训学校是经教育局批准成立的一所集音乐、舞蹈、美术等多个综合项目培训的民办学校,招生对象少儿、成人,学校自成立以来“以育人为本”的办学理念,坚持“诚信、严谨、规范、创新”的校风,培养学生学习的兴趣,提高增强学生的综合素质。学校的师资具有严谨的教学态度、丰富的教学经验,拥有高度的责任心和爱心,学校管理水平规范化、系统化,是学子们求学的理想校园。", "comp_contacts": "林老师", "comp_address": "南宁市秀灵路88号(广西大学东门对面,香格里拉小区)", "image_urls": ["http://vip.gxrc.com/Public/Phone/0D59F931-5B5B-4383-886E-0523EE047511"], "image_path": "full/bc435e76ed065cb62c894ca721cd33ab42eeabe7.jpg", "comp_tel": "077173293673"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=14361", "comp_url_id": 14361, "comp_name": "广西金源置业集团有限公司", "comp_desc": "广西金源置业集团(简称- 金源集团)成立于2006年。前身为创立于1995年7月的广西金源房地产开发有限公司。截止2015年底,金源集团总资产约45亿元人民币,下辖20多个全资或控股子公司,拥有员工1200多人。集团现在正在开发及储备项目建筑面积逾200万平方米,下辖子公司经营多个汽车品牌,是一家以房地产经营管理为主业,兼营汽车销售服务及项目投资管理的大型集团公司。", "comp_contacts": "胡小姐、李小姐", "comp_email": "jinyuan@gxjyfdc.com", "comp_website": "www.gxjyfdc.com", "comp_address": "广西南宁市金湖路63号金源CBD现代城28楼", "image_urls": ["http://vip.gxrc.com/Public/Phone/20BF56B4-FC14-4755-A514-685DBDBF45D6"], "image_path": "full/0b70fc72a7720f8b7260dd01690c28a677143c80.jpg", "comp_tel": "077175523000"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=57524", "comp_url_id": 57524, "comp_name": "广西师范学院师园学院", "comp_desc": "广西师范学院师园学院简介", "comp_contacts": "吴老师、蒙老师", "comp_website": "www.gxsyu.com/", "comp_address": "南宁市明阳工业区明阳大道15号", "image_urls": ["http://vip.gxrc.com/Public/Phone/CDCE4896-7774-4073-A750-0E5039220979"], "image_path": "full/9a14fcb7623869aea330b61c1c51c00ea58249c0.jpg", "comp_tel": "077173 191165"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1102941", "comp_url_id": 1102941, "comp_name": "桂林众阳光能科技有限责任公司", "comp_desc": "浙江众阳集团是一家综合性集团企业,主要涉足行业有:水泥、商品混凝土、商品砂浆、耐磨材料、体育文化娱乐、煤炭贸易、仓储物流等。公司总资产8.3亿元,年销售收入超过15亿元,是历年诸暨市规模企业;并入围“浙商全国500强”榜单,2009年排名第308位,2010年排名第291位,2011年排名第254位,2012年排名第253位。", "comp_contacts": "王先生", "comp_website": "http;//www.zhongyanggroup.com.cn", "comp_address": "广西桂林市临桂县秧塘工业园秧十八路", "image_urls": ["http://vip.gxrc.com/Public/Phone/A39BCBE7-6E18-4628-ACCC-EFF6AE37084E"], "image_path": "full/9865653b4b22fe11151b78543bdddd416defd75f.jpg", "comp_tel": "077373663600"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1104818", "comp_url_id": 1104818, "comp_name": "广西金步电力科技有限公司", "comp_desc": "广西金步电力科技有限公司坐落在“东盟博览会”永久举办地——中国南宁,位于南宁国家经济技术开发区。公司成立于2011年,注册资金3100万元,是一家专业从事电表箱、配电箱、开关柜、低压无功补偿等高低压成套设备及新能源配套产品的研发、生产、销售及服务于一体的现代化企业。", "comp_contacts": "陈小姐", "comp_website": "www.jinbudl.com/", "comp_address": "南宁市江南区南站大道与沙井大道交界银凯工业园洪胜路7号", "image_urls": ["http://vip.gxrc.com/Public/Phone/260D8BBD-3B16-44CE-AA47-0C4E8E530C92"], "image_path": "full/014df6b88057b02ca40d5e208bb406d100fc8721.jpg", "comp_tel": "077174739266"}{"comp_url": "http://www.gxrc.com/WebPage/Company.aspx?EnterpriseID=1105150", "comp_url_id": 1105150, "comp_name": "广西创致实业股份有限公司", "comp_desc": "广西创致实业股份有限公司始创于2004年,2015年11月30日由玉林市创致电器销售有限公司整体变更而来,公司股本7000万元。", "comp_contacts": "高小姐", "comp_email": "3099934559@qq.com", "comp_website": "www.gxchuangzhi.com", "comp_address": "广西壮族自治区玉林市清宁路254-258号", "image_urls": ["http://vip.gxrc.com/Public/Phone/DB83CBCC-53EF-413D-B594-E1AC8D0392CE"], "image_path": "full/f5bdc2d427fe266ed45f17bcc1091f0bb6ecdfc7.jpg", "comp_tel": "077572036119"}

转载于:https://my.oschina.net/RanboSpider/blog/1607845

Scrapy 通用爬虫爬取广西人才网数据记录(上,企业信息)相关推荐

  1. mysql scrapy 重复数据_大数据python(scrapy)爬虫爬取招聘网站数据并存入mysql后分析...

    基于Scrapy的爬虫爬取腾讯招聘网站岗位数据视频(见本头条号视频) 根据TIOBE语言排行榜更新的最新程序语言使用排行榜显示,python位居第三,同比增加2.39%,为什么会越来越火,越来越受欢迎 ...

  2. 对爬虫爬取到的数据进行存储

    已写章节 第一章 网络爬虫入门 第二章 基本库的使用 第三章 解析库的使用 第四章 数据存储 第五章 动态网页的抓取 文章目录 已写章节 第四章 数据存储 4.1 文件存储 4.1.1 TXT文件存储 ...

  3. python3 scrapy实战:爬取拉勾网招聘数据至数据库(反爬虫)

    首先注明:感谢拉勾网提供的权威.质量的数据,本人抱着学习的态度,不愿增加其服务器负担,与dos攻击. 由于后面准备做一个大一点的数据分析项目,所以前提需要获取大量的有质量和权威的信息,其中一个获取点便 ...

  4. python爬取网页代码-python爬虫爬取网页所有数据详细教程

    Python爬虫可通过查找一个或多个域的所有 URL 从 Web 收集数据.Python 有几个流行的网络爬虫库和框架.大家熟知的就是python爬取网页数据,对于没有编程技术的普通人来说,怎么才能快 ...

  5. python 百度百科 爬虫_爬虫爬取百度百科数据

    以前段时间<青春有你2>为例,我们使用Python来爬取百度百科中<青春有你2>所有参赛选手的信息. 什么是爬虫? 为了获取大量的互联网数据,我们自然想到使用爬虫代替我们完成这 ...

  6. python xpath循环_Python爬虫 爬取北京二手房数据

    点击蓝字"python教程"关注我们哟! 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及 ...

  7. 使用爬虫爬取两种数据:结构化/非结构化文本

    一.非结构化文本的爬取 微博上有一篇关于"#学校里的男生有多温柔#"的话题,点进去一看感觉评论很真实,于是想把评论给爬下来看一看,并生成词云.刚开始思路是通过网页端微博爬取,通过开 ...

  8. 《崔庆才Python3网络爬虫开发实战教程》学习笔记(5):将爬虫爬取到的数据存储到TXT,Word,Excel,Json等文件中

    本篇博文是自己在学习崔庆才的<Python3网络爬虫开发实战教程>的学习笔记系列,此套教程共5章,加起来共有34节课,内容非常详细丰富!如果你也要这套视频教程的话,关注我公众号[小众技术] ...

  9. python爬虫爬取多个页面_Python 爬虫爬取多页数据

    但是,按照常规的爬取方法是不可行的,因为数据是分页的: 最关键的是,不管是第几页,浏览器地址栏都是不变的,所以每次爬虫只能爬取第一页数据.为了获取新数据的信息,点击F12,查看页面源代码,可以发现数据 ...

最新文章

  1. 2018.12.13待填之坑
  2. IDEA JNI配置
  3. 21.println输出打印.rs
  4. 一次微信小程序的快速开发体验
  5. 点击button后改变文字_27. 教你零基础搭建小程序:小程序的常见组件—button
  6. vuex语法精简(方便开发查阅)
  7. es6 Null 传导运算符
  8. poj1182食物链(种类并查集)
  9. 探测能源、跨洲安全通信……你所想不到的量子技术!
  10. 多种方式描述4选1数据选择器
  11. Word插入脚注后分节符自动变成分页符解决办法
  12. 微信公众平台模拟登录自动群发图文消息工具包
  13. 水下传感器网络研究——第5章 路由协议
  14. IT零起点转FICO学习路线(转)
  15. Windows下4K屏mobaxterm远程桌面设置
  16. 解决Ubuntu18.04下VMware开启虚拟网络编辑器无反应
  17. 第十一课 Kubernetes生产级实践-ServiceMesh代表作istio
  18. unity3d android jar,c# – 访问unity3d中的android jar
  19. PHP 如何安装ionCube扩展
  20. 月光族开始反消费主义:58万年轻人攒钱攒到“丧心病狂”

热门文章

  1. 域控策略之用户或计算机组策略例外配置
  2. nginx禁止外网访问
  3. 改进euler方法 c语言,科学网—计算方法:Euler法及其改进 - 张江敏的博文
  4. 在线画图软件draw.io
  5. php mysql开发实战 光盘_随书光盘-PHP开发实战1200例 | 软件库
  6. 记录一下tomcat的./startup.sh完成之后没有tomcat进程问题
  7. Mapper method ‘com.dao.xxxx‘ has an unsupported return type
  8. 学习笔记【Java 虚拟机②】垃圾回收
  9. head 10字节_优秀了!10万系谱,计算近交系数,不到1秒!
  10. prometheus+grafana告警,监控部署展示