爬虫-招聘系列2----boss某直聘

1.采集数据网站:boss直聘

  为避免打广告嫌疑,自行前往官网查看

2.网站分析

搜索条件较上一篇51要多一点,但是提交参数原理都是一样的

那么我们就下抓取职位为python,范围为全国的数据,其他也不限

 对网站数据查看,都在源码里

3.对构造url,请求

url:

https://www.zhipin.com/c100010000/?query=python&page=1&ka=page-1

 直接请求发现请求不过数据来,

那么就对请求方式及请求头等进行分析,发现参数没有什么特别的地方,就分析请求头,携带了一个cookie,那么就带上吧,发现带上后...

是可以请请求到数据的

4.编写代码:

# -*- coding: UTF-8 -*-
'''
@Author :Jason
'''
import requests
from time import sleep
from lxml import etree
import random
from urllib.parse import  quote
import csv

class Boss():
    def __init__(self):
        # 这个url前面是固定的主站域名 + 地区编号(暂时定为全国就不改了) + 查询词 + 页数 + 负的页数
        self.bash_url = "https://www.zhipin.com/c100010000/?query="+"search_text"+"&page="+"page_num"+"&ka=page-"+"page_num"
        self.proxies = random.choice([
            #我的代理池,
        ])
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'}

    def get_info(self):
        search_text = input("请输入想要查询的职位:")
        encode_search_text = quote(str(search_text))
        cookie_dict = {}
        cookie = 'lastCity=101010100; __c=1577099728; __g=-; __l=l=%2Fwww.zhipin.com%2F&r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D6qIB6tnnO4bbTEy4OgymN0OLz2T7jEs1bIOggJ6JCOwfjvzNjoF_LMICDoRv0ReD%26wd%3D%26eqid%3Dfe051a5c0013a37e000000045e00a1cd&friend_source=0&friend_source=0; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1577099728,1577100137; __a=57714439.1577099728..1577099728.16.1.16.16; __zp_stoken__=fab0SNjGDZ%2BPKE153aV5BYG6FFCYoMsFMUrkxGnAdQ15UfsYeCJCXGlKmrjtyCWsKA5%2FEnhiPUKj0VPKtxxXJU206K6FvIg82vcCMKWuKOzd9YBaStE%2FIcfeR40m1QEv8PLL; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1577101514'
        for i in cookie.split(';'):
            cookie_dict[i.split('=')[0]] = i.split('=')[1]
        for page_num in range(1,2):#翻页数,自定义
            start_url = self.bash_url.replace("search_text",str(encode_search_text)).replace("page_num",str(page_num))
            res = requests.get(start_url,headers=self.headers,proxies=self.proxies,cookies=cookie_dict)
            res.encoding = "utf-8"

            parseHtml = etree.HTML(res.text)
            position_list = parseHtml.xpath('//div[@class="job-title"]/text()')
            salary_list = parseHtml.xpath('//span[@class="red"]/text()')
            address_list = parseHtml.xpath('//div[@class="info-primary"]/p[1]/text()')
            company_list = parseHtml.xpath('//div[@class="company-text"]//h3[@class="name"]/a/text()')
            #皮一下,让你白建个文件,我这里存到txt文档中
            for i,p in enumerate(position_list):
                with open(r'./boss.txt',"a",encoding="utf-8",errors="ignore") as f:
                    f.write(p+" "+salary_list[i]+" "+address_list[i]+" "+
                            company_list[i]+"\n")

if __name__ == "__main__":
    with open('boss直聘职位数据表.csv', 'a', newline='') as f:
        f = csv.writer(f)
        f.writerow(('职位', '薪水', '地点', '公司名称'))#就不采集这么多数据了,职位薪水地点公司名,其他需要的自行增加
    boss = Boss()
    boss.get_info()

5.采集的部分字段及其效果

                                             

此采集时间为2019-12-23.网站可能变更迭代,脚本不一定长期有效

声明: 采集仅源自个人兴趣爱好,数据集仅供个人使用,不涉及商用,侵权联系删除。

发布了128 篇原创文章 · 获赞 95 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/qq_36853469/article/details/103671861