python3 scrapy 爬取腾讯招聘
安装scrapy不再赘述,
在控制台中输入scrapy startproject tencent 创建爬虫项目名字为 tencent
接着cd tencent
用pycharm打开tencent项目
构建item文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html import scrapy class TencentItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() #职位名 positionname = scrapy.Field() #详细链接 positionLink = scrapy.Field() #职位类别 positionType = scrapy.Field() #招聘人数 peopleNum = scrapy.Field() #工作地点 workLocation = scrapy.Field() #发布时间 publishTime = scrapy.Field() |
接着在spiders文件夹中新建tencentPostition.py文件代码如下注释写的很清楚
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# -*- coding: utf-8 -*- import scrapy from tencent.items import TencentItem class TencentpostitionSpider(scrapy.Spider): #爬虫名 name = 'tencent' #爬虫域 allowed_domains = [ 'tencent.com' ] #设置URL url = 'http://hr.tencent.com/position.php?&start=' #设置页码 offset = 0 #默认url start_urls = [url + str (offset)] def parse( self , response): #xpath匹配规则 for each in response.xpath( "//tr[@class='even'] | //tr[@class='odd']" ): item = TencentItem() # 职位名 item[ "positionname" ] = each.xpath( "./td[1]/a/text()" ).extract()[ 0 ] # 详细链接 item[ "positionLink" ] = each.xpath( "./td[1]/a/@href" ).extract()[ 0 ] # 职位类别 try : item[ "positionType" ] = each.xpath( "./td[2]/text()" ).extract()[ 0 ] except : item[ "positionType" ] = '空' # 招聘人数 item[ "peopleNum" ] = each.xpath( "./td[3]/text()" ).extract()[ 0 ] # 工作地点 item[ "workLocation" ] = each.xpath( "./td[4]/text()" ).extract()[ 0 ] # 发布时间 item[ "publishTime" ] = each.xpath( "./td[5]/text()" ).extract()[ 0 ] #把数据交给管道文件 yield item #设置新URL页码 if ( self .offset< 2620 ): self .offset + = 10 #把请求交给控制器 yield scrapy.Request( self .url + str ( self .offset),callback = self .parse) |
接着配置管道文件pipelines.py代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html import json class TencentPipeline( object ): def __init__( self ): #在初始化方法中打开文件 self .fileName = open ( "tencent.json" , "wb" ) def process_item( self , item, spider): #把数据转换为字典再转换成json text = json.dumps( dict (item),ensure_ascii = False ) + "\n" #写到文件中编码设置为utf-8 self .fileName.write(text.encode( "utf-8" )) #返回item return item def close_spider( self ,spider): #关闭时关闭文件 self .fileName.close() |
接下来需要配置settings.py文件
不遵循ROBOTS规则
1
|
ROBOTSTXT_OBEY = False |
1
2
|
#下载延迟 DOWNLOAD_DELAY = 3 |
1
2
3
4
5
|
#设置请求头 DEFAULT_REQUEST_HEADERS = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36' , 'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' , } |
1
2
3
4
|
#交给哪个管道文件处理 文件夹.管道文件名.类名 ITEM_PIPELINES = { 'tencent.pipelines.TencentPipeline' : 300 , } |
接下来再控制台中输入
scrapy crawl tencent
即可爬取
源码地址
https://github.com/ingxx/scrapy_to_tencent
python3 scrapy 爬取腾讯招聘的更多相关文章
- 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息
简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 系统环境:Fedora22(昨天已安装scrapy环境) 爬取的开始URL:ht ...
- 利用scrapy爬取腾讯的招聘信息
利用scrapy框架抓取腾讯的招聘信息,爬取地址为:https://hr.tencent.com/position.php 抓取字段包括:招聘岗位,人数,工作地点,发布时间,及具体的工作要求和工作任务 ...
- 『Scrapy』爬取腾讯招聘网站
分析爬取对象 初始网址, http://hr.tencent.com/position.php?@start=0&start=0#a (可选)由于含有多页数据,我们可以查看一下这些网址有什么相 ...
- scrapy 第一个案例(爬取腾讯招聘职位信息)
import scrapy import json class TzcSpider(scrapy.Spider): # spider的名字,唯一 name = 'tzc' # 起始地址 start_u ...
- python之scrapy爬取某集团招聘信息以及招聘详情
1.定义爬取的字段items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See do ...
- Python 爬取腾讯招聘职位详情 2019/12/4有效
我爬取的是Python相关职位,先po上代码,(PS:本人小白,这是跟着B站教学视频学习后,老师留的作业,因为腾讯招聘的网站变动比较大,老师的代码已经无法运行,所以po上),一些想法和过程在后面. f ...
- scrapy 爬取智联招聘
准备工作 1. scrapy startproject Jobs 2. cd Jobs 3. scrapy genspider ZhaopinSpider www.zhaopin.com 4. scr ...
- 利用Crawlspider爬取腾讯招聘数据(全站,深度)
需求: 使用crawlSpider(全站)进行数据爬取 - 首页: 岗位名称,岗位类别 - 详情页:岗位职责 - 持久化存储 代码: 爬虫文件: from scrapy.linkextractors ...
- python爬虫爬取腾讯招聘信息 (静态爬虫)
环境: windows7,python3.4 代码:(亲测可正常执行) import requests from bs4 import BeautifulSoup from math import c ...
随机推荐
- C++ 表示一个区间值得方法
C++中不允许这样的写法 85<= score <=100;你要想表示85<=score<=100的话只能这么写score>=85&&score<= ...
- JS控制页面内容
JS操作页面内容 innerText:普通标签内容(自身文本与所有子标签文本)innerHTML:包含标签在内的内容(自身文本及子标签的所有)value:表单标签的内容outerHTML:包含自身标签 ...
- RHEL7--linux系统启动流程与故障排除
一.Linux启动过程 MBR保存着系统的主引导程序(grub 446字节,分区表64字节),启动过程就是把内核加载到内存. 启动的顺序: 1.BIOS: 2.BIOS激活MBR: 3.MBR中的引导 ...
- 【集群搭建】Zookeeper集群环境配置
1.下载解压安装文件 2.配置文件:conf/zoo.cfg tickTime=2000 dataDir=/usr/sunny/logs/zookeeper/data dataLogDir=/usr/ ...
- Codeforces Round #528 div1
完了,看来上一次的flag要应验了,我大概是真的要掉成pupil了吧.. A - Connect Three 这个就是找到x的中间值,y的中间值,然后切一下,然后把所有的点挂到这条边上.但是我做的还是 ...
- hibernate与mybatis的区别和应用场景
mybatis 与 hibernate 的区别和应用场景(转) 1 Hibernate : 标准的ORM(对象关系映射) 框架: 不要用写sql, sql 自动语句生成: 使用Hibernate ...
- 【Android实验】UI设计-Android计算器
目录 实验目的 实验要求 实验过程 1. 界面设计 2. 功能设计 3. 运算处理 实验目的 自主完成一个简单APP的设计工作,综合应用已经学到的Android UI设计技巧,重点注意合理使用布局 实 ...
- UVa 1603 破坏正方形
https://vjudge.net/problem/UVA-1603 题意:有一个火柴棍组成的正方形网格,计算至少要拿走多少根火柴才能破坏所有正方形. 思路:从边长为1的正方形开始遍历,将正方形的边 ...
- python读取文本txt文件乱码问题
python2的编码实在是个头疼的问题,编码问题也将作为一个长期的话题,遇到问题随时补充. 这次的问题比较简单,是在做词云wordcloud的时候发现的,作用就是从文本文件中读取文字,将其制作成词云. ...
- 【bzoj】3224: Tyvj 1728 普通平衡树
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 10097 Solved: 4302[Submit][St ...