爬虫!教你用python里的json分分钟爬取腾讯招聘动态网站求职信息!(结构化数据)

**首先要导入需要用到的三个库:time,requests,json**
首先解释一下为什么要导入json跟time模块,打开腾讯招聘网
右键检查点击elements里面的网页元素
**检查**
来到network里面你会发现当前链接response里面并没有我们想要的数据信息
**all里面直接查看**
那么我们开始思考,这会不会是一个动态网页链接
接下来我们点击"XHR"
**果然,这是一个结构化数据**
接下来我们就观察这个可以拿到有效信息的url!
有效的url
url参数
我们经过观察发现,该url里面的有效参数有一个timestamp
再一看,我们就发现它是十三位置也就到了毫秒
博主也特意去查了资料
(所谓的时间戳也就是从1970-01-01 00:00:00到现在的时间,如果是十位就是到秒,如果是十三位也就是毫秒)
经过博主的测试,这个十三位数的timestemp就是我们所说的时间戳
以下就是检测是否为时间戳的代码:

**#把时间戳转化为当前时间
# timestemp = 1585231659491#(这里博主给的时间戳可换为你自己电脑该url显示的)
# timearry = time.localtime(float(timestemp)/1000)
# time = time.strftime('%Y-%m-%d %H:%M:%S',timearry)
# print(time)**

我们也可以进一步测试将当前时间进行一个测试

#把当前时间转化为时间戳(time.time()就可以拿到时间戳)
# timestemp = int(time.time())*1000
#重复上面的将时间戳转化为标准化操作
# timearry = time.localtime(float(timestemp)/1000)
# time = time.strftime('%Y-%m-%d %H:%M:%S',timearry)
# print(time)

说了这么多,其实就是一句话
time.time()可以拿到当前时间戳,帮助我们构建url,发送请求
所以要导入时间模块,动态结构化爬虫,所以导入json模块

分析完成,接下来,我们就可以写代码了!

**base_url = "https://careers.tencent.com/tencentcareer/api/post/Query?timestamp={}&parentCategoryId=40002&pageIndex={}&pageSize=10&language=zh-cn&area=cn"
headers = {
    "为了本宝宝ip长存,这里你们自己想办法吧~"
}**
#构造分页链接,以及完成url的拼接
**def get_page():
    url_list = []
    for i in range(10):
        url = base_url.format(int(time.time())*1000,i+1)
        url_list.append(url)
#         print(url_list)
    return url_list**

接下来我们进行爬虫
下面我们着重讲解以上代码
涉及到的唯一一个复杂方法就是json,我们完全可以认为
通过json.loads()这样一个方法就将以上结构化是代码转换成了我们非常熟悉的python的对象{}、以及[ ]

(仔细想想是不是跟我们用正则表达式以及pyquery、BeaytifulSoup、XPath等方法爬取非结构化数据很像呢)

**def run(url_list):
    url__list = []
    for url in url_list:
#         print(url)
		#发送请求
        response = requests.get(url=url,headers=headers)
        response = response.content.decode('utf-8')
#         print(response)
# #         print(result['Data']['Posts'][3]['RecruitPostName']) 
#通过json.loads()这样一个方法就将以上结构化是代码转换成了python里的字典、列表
        result = json.loads(response)
#         print(result['Data']['Posts'])
#通过对“字典”的两次操作,我们拿到了一个个含有有效信息的列表
        lists = result['Data']['Posts']**

接下来就是通过for循环在该列表里进行拿取我们想要的信息

       ***for value in lists:
#             print(value)
            #拿地址标签
            get_location = value['LocationName']
#             print(get_location)
            
            #拿职位标签
            get_name = value['RecruitPostName']
#             print(get_name)
            #最后更新的时间
            get_time = value['LastUpdateTime']
#             print(get_time)
            
            #需具备的能力
            get_responsibility = value['Responsibility']
#             print(get_responsibility)***

最后,拼接我们想要的信息,并通过for循环写入文件,为了方便
博主直接存储在了当前文件夹下,存储格式为.doc/txt

(当然,我们也可以存储为csv格式,或者数据库)

简单来说,存储为csv文件只需要导入一个csv模块并且在with后面括号加上newline="",以及encoding=utf-8后面加上-sig,然后创建一个write=csv.writerow()
write(“str”)
而存储到数据库也较为简单,只简述步骤,后面有机会会写到:
1.通过pymysq里的connect方法来连接数据库
2.写sql语句
3.创建游标:cursor
4.通过cursor.execute(sql)操作数据库
5.提交事务:coon.commit()
6.关闭游标
7.关闭数据库

 str = get_time+"\n"+get_name+"\n"+get_responsibility+"\n"
            url__list.append(str)
            for i in url__list:   
                with open(".\腾讯招聘_设计类.doc","a",encoding="utf-8") as f:
                    f.write(i+"\n")

方法封装完成,最后进行调用
(当然,你完全可以用类进行封装与写入,思路会更加清晰)

**调用**
**大功告成**
大功告成
**结果**

爬虫!教你用python里的json分分钟爬取腾讯招聘动态网站求职信息!(结构化数据)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alexander plus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值