成功爬智联

还记得刚开始学习爬虫的时候,曾经想拿智联练手,无奈发现点开首页竟是这样的…
在这里插入图片描述
一看是要手机登录了,然后就没有然后了…

后来继续学习爬虫,终于感觉学的差不多了,就回过头来攻克智联,没想到还是不知道怎么下手,但是我偶然发现:

在我的登录之后,把那个url复制之后重新打开,居然,,,打开了!!!

在这里插入图片描述

这可是一个大坑,简直就是发现新大陆!

接着就是爬取啦,so easy!

习惯性地想用xpath,但是查看网页源代码,发现什么都找不到,于是在Network中发现这是json,如下

在这里插入图片描述

接下来就是爬取啦,以下是完整代码,嘻嘻

# coding=utf-8
import requests
import json
from pymongo import MongoClient

headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134',
}

def parse_url(url):
    print(url)
    response = requests.get(url=url, headers=headers)
    return response.content.decode()

def get_content_list(json_str):
    dict_ret = json.loads(json_str)
    content_list = dict_ret["data"]["results"]
    return content_list

def save_content_list(content_list):
    # 写入txt
    # with open("zhilian.txt", "a", encoding="utf8") as fp:
    #     for content in content_list:
    #         fp.write(json.dumps(content, ensure_ascii=False))
    #         fp.write("\n")
    # print("保存成功")

    # 写入MongoDB,实例化client,建立连接
    client = MongoClient(host="127.0.0.1", port=27017)  # 本地则括号内不用写
    collection = client["test"]["zhilian2"]  # 第一个中括号是库,第二个是集合
    collection.insert(content_list)
    print("保存成功")

def main():

    url_temp = 'https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=90&cityId={}&kw={}&kt=3&=0&_v=0.37871776'

    kw = input("请输入关键词:")
    city = input("请输入城市:")

    num = 0
    while True:
        url = url_temp.format(num, city, kw)
        # 发送请求,获取响应
        json_str = parse_url(url)
        # 提取数据
        content_list = get_content_list(json_str)
        # 保存
        save_content_list(content_list)
        # 小于90则是最后一页
        if len(content_list) < 90:
            break
        # 构造下一页url
        num += 90  # 每一页的pagesize


if __name__ == '__main__':
    main()

实战真的能学到更多呢,继续进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值