我爬取的是Python相关职位,先po上代码,(PS:本人小白,这是跟着B站教学视频学习后,老师留的作业,因为腾讯招聘的网站变动比较大,老师的代码已经无法运行,所以po上),一些想法和过程在后面。

 from lxml import etree
import requests HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36.36',
'Cookie': '__ga=GA1.2.212176558.1568885824; pgv_pvi=2298593280; _gcl_au=1.1.1370638257.1568885828; loading=agree',
'Referer': 'https://careers.tencent.com/search.html?keyword=python',
'Authority': 'careers.tencent.com',
"Dnt": ""
} #通过传入的indexNum获取Dict
def GetJsonByIndexUrl(indexNum):
base_url = "https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1575374831812&countryId=&cityId" \
"=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=python&pageIndex={" \
"}&pageSize=10&language=zh-cn&area=cn"
url = base_url.format(indexNum) # 传入indexNum的值,构造出完整的indexURL
response = requests.get(url, headers=HEADERS)
postDict = response.json()
return postDict #通过获取的Dict取得每个职位的Id
def GetPostIdByDict(postDict):
postIds = []
data = postDict["Data"]
posts = data["Posts"]
for post in posts:
postId = post["PostId"]
postIds.append(postId)
return postIds #取得Id后,再获取职位详情内容
# post_url="https://careers.tencent.com/jobdesc.html?postId="这是详情页面,但是数据也是在json里面,所以直接获取json内容,
# 也就是下面的detail_url
def GetDetailByPostId(postIds):
detail_url = "https://careers.tencent.com/tencentcareer/api/post/ByPostId?timestamp=1575389747280&postId={}&language=zh-cn"
for id in postIds:
detail_url_byId = detail_url.format(id)
rsp = requests.get(detail_url_byId)
detailData = rsp.json()
print(detailData["Data"]) if __name__ == '__main__':
for x in range(1, 11): # 获取前10页的信息
mydict = GetJsonByIndexUrl(x)
postIds = GetPostIdByDict(mydict)
print("第", x, "页", "*" * 20)
GetDetailByPostId(postIds)
print("*" * 20)

一些想法和过程:

①一开始做的时候,发现职位的List不在当前页面,所以爬取这个无法获取信息,于是查看NetWork发现一个路径才是列表信息,

我命名为base_url,通过requests.get可以获得此List中的postId。

②点开一个职位的详情页面,发现其实详情内容也不在当前页面,内容又是一个新的路径,我命名为detail_url,通过requests.get,

其实就可以获得想得到的信息了。

Python 爬取腾讯招聘职位详情 2019/12/4有效的更多相关文章

  1. python爬取智联招聘职位信息(多进程)

    测试了下,采用单进程爬取5000条数据大概需要22分钟,速度太慢了点.我们把脚本改进下,采用多进程. 首先获取所有要爬取的URL,在这里不建议使用集合,字典或列表的数据类型来保存这些URL,因为数据量 ...

  2. python爬取智联招聘职位信息(单进程)

    我们先通过百度搜索智联招聘,进入智联招聘官网,一看,傻眼了,需要登录才能查看招聘信息 没办法,用账号登录进去,登录后的网页如下: 输入职位名称点击搜索,显示如下网页: 把这个URL:https://s ...

  3. scrapy 第一个案例(爬取腾讯招聘职位信息)

    import scrapy import json class TzcSpider(scrapy.Spider): # spider的名字,唯一 name = 'tzc' # 起始地址 start_u ...

  4. 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息

    简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 系统环境:Fedora22(昨天已安装scrapy环境) 爬取的开始URL:ht ...

  5. 用Python爬取智联招聘信息做职业规划

    上学期在实验室发表时写了一个爬取智联招牌信息的爬虫. 操作流程大致分为:信息爬取——数据结构化——存入数据库——所需技能等分词统计——数据可视化 1.数据爬取 job = "通信工程师&qu ...

  6. Python爬取腾讯新闻首页所有新闻及评论

    前言 这篇博客写的是实现的一个爬取腾讯新闻首页所有的新闻及其所有评论的爬虫.选用Python的Scrapy框架.这篇文章主要讨论使用Chrome浏览器的开发者工具获取新闻及评论的来源地址. Chrom ...

  7. python 爬取腾讯视频的全部评论

    一.网址分析 查阅了网上的大部分资料,大概都是通过抓包获取.但是抓包有点麻烦,尝试了F12,也可以获取到评论.以电视剧<在一起>为例子.评论最底端有个查看更多评论猜测过去应该是 Ajax ...

  8. 『Scrapy』爬取腾讯招聘网站

    分析爬取对象 初始网址, http://hr.tencent.com/position.php?@start=0&start=0#a (可选)由于含有多页数据,我们可以查看一下这些网址有什么相 ...

  9. python爬取实习僧招聘信息字体反爬

    参考博客:http://www.cnblogs.com/eastonliu/p/9925652.html 实习僧招聘的网站采用了字体反爬,在页面上显示正常,查看源码关键信息乱码,如下图所示: 查看网页 ...

随机推荐

  1. android 开发学习2

    Dao dao = new Dao(yi_ji_lu_zhang_dan.this);List<GetOneRecord> list = dao.getAllRecord();//创建迭代 ...

  2. HDU - 5898 odd-even number (数位dp)

    题意:求一个区间内,满足连续的奇数长度是偶数,连续的偶数长度是奇数的数的个数. #include<cstdio> #include<cstring> #include<c ...

  3. 每天一点点之laravel框架开发 - Laravel5.6去除URL中的index.php

    在项目routes/web.php文件中添加了自定义的路由后,访问localhost/index.php/aaa,可以正常访问,但是去掉index.php后,提示404 Not Found 1. 按照 ...

  4. PHP的变量作用域-常亮-全局变量-表单提交变量

    一.变量的作用域 作用域是指在一个脚本中某个变量在哪些地方可以使用或可见. 内置超级全局变量可以在脚本的任何地方使用和可见. 常量,一旦被声明,将可以在全局可见.也就是说,他们可以在函数内外使用. 在 ...

  5. LICEcap--一款录屏生成Gif的软件

    下载地址:http://www.cockos.com/licecap/ 效果图:

  6. statement 、prepareStatement的用法和解释

    转自:http://blog.csdn.net/QH_JAVA/article/details/48245945   一.prepareStatement 的用法和解释 1.PreparedState ...

  7. 用tensorflow求手写数字的识别准确率 (简单版)

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist = in ...

  8. git修改已经push的commit message

    git中修改上一次提交的commit的message git commit --amend -m "你的新的注释" git push -f 多个commit https://www ...

  9. python----linux下简单的排序

    1.选择排序:把一个数与余下所有的数排序,最小的排到最前面 [root@besttest liyn_test]# cat test.py #! /usr/bin/python a=[,,,] ,len ...

  10. 51nod 1305:Pairwise Sum and Divide

    1305 Pairwise Sum and Divide 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 有这样一段 ...