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
您可能感兴趣
- wxpython 弹出对话框显示图片(WxPython建立批量录入框窗口)
- python操作json库(Python将json文件写入ES数据库的方法)
- python创建一个xls文件(Python XlsxWriter模块Chart类用法实例分析)
- python开启多线程(python 多线程重启方法)
- python爬虫10分钟教程(浅谈Python爬虫基本套路)
- 如何查看python beautifulsoup(Python爬虫beautifulsoup4常用的解析方法总结)
- python中对象方法和顶级方法(Python3.5面向对象程序设计之类的继承和多态详解)
- 怎么用python实现链表(Python3实现的判断回文链表算法示例)
- python使用门算法加密文件(python实现栅栏加解密 支持密钥加密)
- python3循环使用教程(Python3.5常见内置方法参数用法实例详解)
- pythonpandas使用攻略(详解Python中pandas的安装操作说明傻瓜版)
- python实现linux服务(Python实现Linux监控的方法)
- pythonjson库(Python常用的json标准库)
- python 装饰器模式(python重试装饰器的简单实现方法)
- python中怎样使用列表的sort方法(详解python中sort排序使用)
- 如何用python爬取最新电影(使用python实现抓取腾讯视频所有电影的爬虫)
- 哪里可以看熊猫(成都哪里可以看熊猫)
- oppo手机的三种录屏方法,你知道有哪些吗(oppo手机的三种录屏方法)
- 吉林神秘传染链跨省 传染源尚未找到,舒兰 封城(吉林神秘传染链跨省)
- 吉林舒兰 封城 聚集性疫情传播链已延至沈阳,有一个细节让人忧心(吉林舒兰封城)
- 1天密接者猛增77人,患者轨迹透露危险信号 吉林市全面封闭管理(1天密接者猛增77人)
- 吉林舒兰 封城 15人确诊 276人隔离,出现跨省传播(吉林舒兰封城)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9