scrapy之Crawspider 腾讯招聘实战案例
1. 在虚拟机中cd到项目目录,再运行下面代码创建spider文件:
scrapy genspider -t crawl test www.baidu.com
2. spider.py代码
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from tanzhou.items import TanzhouItem,DetailItem class TencentSpider(CrawlSpider):
name = 'tencent'
allowed_domains = ['hr.tencent.com']
start_urls = ['https://hr.tencent.com/position.php?lid=2268&tid=87&keywords=python'] rules = (
Rule(LinkExtractor(allow=r'start=\d+'), callback='parse_item',follow=True),
Rule(LinkExtractor(allow=r'position_detail\.php\?id=\d+'), callback='parse_detail_item', follow=False), ) def parse_item(self, response):
# 解析职位信息
tr = response.xpath(
'//table[@class="tablelist"]/tr[@class = "even"]|//table[@class="tablelist"]/tr[@class = "odd"]')
if tr:
for i in tr:
# 第二种方式,用items.py约束
item = TanzhouItem()
item["jobName"] = i.xpath('./td[1]/a/text()').extract_first()
item["jobType"] = i.xpath('./td[2]/text()').extract_first()
item["Num"] = i.xpath('./td[3]/text()').extract_first()
item["Place"] = i.xpath('./td[4]/text()').extract_first()
item["Time"] = i.xpath('./td[5]/text()').extract_first() yield item
def parse_detail_item(self,response):
item = DetailItem()
item['detail_content'] = response.xpath("//ul[@class = 'squareli']/li/text()").extract()
item['detail_content'] = '\n'.join(item['detail_content'])
yield item
3. items代码:
import scrapy class TanzhouItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
jobName = scrapy.Field()
jobType = scrapy.Field()
Num = scrapy.Field()
Place = scrapy.Field()
Time = scrapy.Field()
class DetailItem(scrapy.Item):
detail_content = scrapy.Field()
4. pipelines代码:
import json
from tanzhou.items import TanzhouItem,DetailItem class TanzhouPipeline(object):
def process_item(self, item, spider):
# 数据json化 ,如果是用items 则需要先转化成字典格式dict()再用json
# item = json.dumps(item,ensure_ascii=False)
if isinstance(item,TanzhouItem):
item = json.dumps(dict(item),ensure_ascii=False)
self.f.write(item)
self.f.write('\n')
if isinstance(item,DetailItem):
item = json.dumps(dict(item), ensure_ascii=False)
self.f2.write(item)
self.f2.write('\n') return item
# 爬虫开启时运行
def open_spider(self,spider):
# 打开文件
self.f = open('info2.json','w')
self.f2 = open('detail2.json', 'w')
# 爬虫关闭时运行
def close_spider(self,spider):
# 关闭文件
self.f.close()
self.f2.close()
scrapy之Crawspider 腾讯招聘实战案例的更多相关文章
- Scrapy 项目:腾讯招聘
目的: 通过爬取腾讯招聘网站(https://careers.tencent.com/search.html)练习Scrapy框架的使用 步骤: 1.通过抓包确认要抓取的内容是否在当前url地址中,测 ...
- python3 scrapy 爬取腾讯招聘
安装scrapy不再赘述, 在控制台中输入scrapy startproject tencent 创建爬虫项目名字为 tencent 接着cd tencent 用pycharm打开tencent项目 ...
- 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息
简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 系统环境:Fedora22(昨天已安装scrapy环境) 爬取的开始URL:ht ...
- Scrapy实现腾讯招聘网信息爬取【Python】
一.腾讯招聘网 二.代码实现 1.spider爬虫 # -*- coding: utf-8 -*- import scrapy from Tencent.items import TencentIte ...
- pymongodb的使用和一个腾讯招聘爬取的案例
一.在python3中操作mongodb 1.连接条件 安装好pymongo库 启动mongodb的服务端(如果是前台启动后就不关闭窗口,窗口关闭后服务端也会跟着关闭) 3.使用 import pym ...
- Scrapy项目 - 实现腾讯网站社会招聘信息爬取的爬虫设计
通过使Scrapy框架,进行数据挖掘和对web站点页面提取结构化数据,掌握如何使用Twisted异步网络框架来处理网络通讯的问题,可以加快我们的下载速度,也可深入接触各种中间件接口,灵活的完成各种需求 ...
- Python爬虫框架Scrapy获得定向打击批量招聘信息
爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这样的说法不够专业,更专业的描写叙述就是.抓取特定站点网页的HTML数据.只是因为一个站点的网页非常多,而我们又不可能事先知道全部网页的URL地址, ...
- 【Vue.js实战案例】- Vue.js递归组件实现组织架构树和选人功能
大家好!先上图看看本次案例的整体效果. 浪奔,浪流,万里涛涛江水永不休.如果在jq时代来实这个功能简直有些噩梦了,但是自从前端思想发展到现在的以MVVM为主流的大背景下,来实现一个这样繁杂的功能简直不 ...
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
随机推荐
- PYTHON- 操作系统和python程序
操作系统基础 应用程序的启动:(重点!!!) python解释器安装,多版本共存 执行python程序的两种方式 运行一个python程序经历的三个阶段(重要) python 的内存管理 ====== ...
- grep匹配某个次出现的次数
cat file | grep -c 'xxx' 统计xxx在file中出现的行数 cat file | grep -o 'xxx' 统计xxx在file中出现的次数
- 清北学堂 清北-Day3-R2-打架 (fight)
题目描述 LYK有 \(n\) 个小朋友排成一排.第 \(i\) 个小朋友的战斗力是 $ a_i $,且他们的战斗力互不相同. 战斗力高的会打败战斗力低的. LYK想恶搞这些小朋友们,具体地,它有 \ ...
- react轮播图----react-slick
1.安装 npm install react-slick; //安装样式 npm install slick carousel; 再在App.css中引入 @import "~slick-c ...
- SQL Server管理员必备技能之性能优化
SQL Server管理员必备技能之性能优化 高文龙关注1人评论1171人阅读2017-09-22 08:27:41 SQL Server 作为企业必不可少的服务之一,所以对于管理员的日常运维是一个极 ...
- Confluence 6 生产环境备份策略
如果你是下面的情况,Confluence 的自动每日 XML 备份可能适合你: 正在评估使用 Confluence 你对数据库的管理并不是非常熟悉同时你的 Confluence 安装实例的数据量并不大 ...
- LeetCode(66): 加一
Easy! 题目描述: 给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会 ...
- java 得到目录路径的方法
得到web项目的根目录路径 System.getProperty("user.dir")// String path = this.getServletContext().getR ...
- css中border画三角形
<!doctype html><html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS----布局不理解
正常情况 正常显示 如果往div标签中添加汉字 出现显示(不理解) 解决方式 加上vertical-align:top