scrapy框架爬取小说的正文内容(Scrapy框架爬取Boss直聘网Python职位信息的源码)
类别:脚本大全 浏览量:248
时间:2022-01-25 00:05:34 scrapy框架爬取小说的正文内容
Scrapy框架爬取Boss直聘网Python职位信息的源码分析
使用crawlspider结合linkextractor和rule爬取网页信息
linkextractor用于定义链接提取规则,一般使用allow参数即可
|
linkextractor(allow = (), # 使用正则定义提取规则 deny = (), # 排除规则 allow_domains = (), # 限定域名范围 deny_domains = (), # 排除域名范围 restrict_xpaths = (), # 使用xpath定义提取队则 tags = ( 'a' , 'area' ), attrs = ( 'href' ,), canonicalize = false, unique = true, process_value = none, deny_extensions = none, restrict_css = (), # 使用css选择器定义提取规则 strip = true): |
rule用于定义crawlspider的爬取规则,由spider内部自动识别,提交请求、获取响应,交给callback指定的回调方法处理response
如果指定了callback,参数follow默认为false;如果callback为none,follow默认为true
|
rule(link_extractor, # linkextractor对象,必选参数 callback = none, # 回调方法,可选 cb_kwargs = none, follow = none, # 是否进行深度爬取,true、false process_links = none, # 用于处理链接(有些反爬策略是返回假的url) process_request = identity) |
源码
items.py
|
class bosszhipinitem(scrapy.item): """boss直聘pytho职位爬虫item""" # 职位名称 position = scrapy.field() # 公司名称 company = scrapy.field() # 薪资 salary = scrapy.field() # 工作地点 location = scrapy.field() # 学历要求 education = scrapy.field() # 工作时间 year = scrapy.field() |
spiders/bosszhipin_spider.py
|
# !/usr/bin/env python # -*- coding:utf-8 -*- import scrapy from scrapy.spider import crawlspider,rule from scrapy.linkextractors import linkextractor from myscrapy.items import bosszhipinitem class bosszhipinspider(crawlspider): """ boss直聘python职位爬虫spider 使用crawlspider基类实现 """ name = 'bosszhipin' allowed_domains = [ 'zhipin.com' ,] start_urls = [ 'http://www.zhipin.com/c100010000/h_100010000/?query=python&page=1' ,] # 链接提取器对象(规定链接提取规则) link_extractor = linkextractor(allow = (r 'page=\d+' )) # 链接提取规则对象列表 # 自动调用callback指定的方法,去取爬取由link_extractor指定的链接提取规则匹配到的url # 原理:link_extractor.extract_links(response)返回匹配到的链接 rules = [ rule(link_extractor = link_extractor,callback = 'parse_page' ,follow = true), ] def parse_page( self ,response): """定义回调方法,用于解析每个response对象""" job_list = response.xpath( '//li[@class="job-list"]//li' ) for job in job_list: position = job.xpath( './/li[@class="info-primary"]//h3[@class="name"]/a/text()' )[ 0 ].extract() salary = job.xpath( './/li[@class="info-primary"]//h3[@class="name"]//span/text()' )[ 0 ].extract() company = job.xpath( './/li[@class="company-text"]//a/text()' )[ 0 ].extract() location = job.xpath( './/li[@class="info-primary"]/p/text()[1]' )[ 0 ].extract() year = job.xpath( './/li[@class="info-primary"]/p/text()[2]' )[ 0 ].extract() education = job.xpath( './/li[@class="info-primary"]/p/text()[3]' )[ 0 ].extract() item = bosszhipinitem() item[ 'position' ] = position item[ 'salary' ] = salary item[ 'company' ] = company item[ 'location' ] = location item[ 'year' ] = year item[ 'education' ] = education yield item |
pipelines.py
|
class bosszhipinpipeline( object ): """boss直聘python职位爬虫item pipeline""" def __init__( self ): self .f = open ( 'data/bosszhipin.json' ,mode = 'wb' ) self .f.write(b '[' ) def process_item( self ,item,spider): data = json.dumps( dict (item),ensure_ascii = false,indent = 4 ) self .f.write(data.encode( 'utf-8' )) self .f.write(b ',' ) return item def close_spider( self ,spider): self .f.write(b ']' ) self .f.close() |
settings.py
|
item_pipelines = { 'myscrapy.pipelines.bosszhipinpipeline' : 1 , } |
运行结果
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/topleeyap/article/details/78907149
您可能感兴趣
- python交互模式下如何开始运行(python交互界面的退出方法)
- python实用教程(Python简直是万能的,这5大主要用途你一定要知道!推荐)
- python分步式进程计算(python中如何使用分步式进程计算详解)
- python读取和写入数据excel(Python向excel中写入数据的方法)
- python解析身份证号(python验证身份证信息实例代码)
- python语法规则讲解(计算机二级python学习教程2 python语言基本语法元素)
- python高德地图可视化(利用python和百度地图API实现数据地图标注的方法)
- python分割字符串要用哪一个语句(python使用threading.Condition交替打印两个字符)
- python图书馆管理系统源码(python实现图书借阅系统)
- python一分钟认识条件判断(对python判断ip是否可达的实例详解)
- python的模块与包与库(Python 中包/模块的 `import` 操作代码)
- python怎么安装queue(python队列Queue的详解)
- python设置按钮(Python按钮的响应事件详解)
- python实用的游戏小代码(python3实现小球转动抽奖小游戏)
- python如何编写一个用户登录系统(Python实现的登录验证系统完整案例基于搭建的MVC框架)
- python中随机生成不重复随机数(python 在指定范围内随机生成不重复的n个数实例)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
- 蓝天代表什么(蓝天代表什么生肖)
- 今天要吃什么(今天要吃什么菜)
- 营养餐是什么(学校营养餐是什么)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
热门推荐
- html的css中怎么选择第三个子元素(CSS中 opacity的设置影响了index层数的改变的问题总结推荐)
- php开发技巧和方法(php+ajax实现商品对比功能示例)
- 免费ftp服务器怎么用(几种流行的ftp服务器软件推荐)
- 怎么查询linux的selinux状态(如何理解Linux下的SELinux)
- 云服务器托管区别(云服务器托管需要注意哪些事项?)
- composer怎么设置镜像(使用composer命令加载vendor中的第三方类库 的方法)
- css实现隐藏菜单(利用CSS实现几款不错的菜单栏实例代码)
- harborjob设置(harbor修改配置文件后重启操作)
- js字符串加密解密
- mysql删库操作记录(mysql常用sql与命令之从入门到删库跑路)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9