zoukankan      html  css  js  c++  java
  • 查看解放号的一些Python岗

    查看一些解放号的外包数据。

    """
        爬取解放号的数据
    """
    
    # 先搜索,找到我们需要的数据,然后通过开发者工具看看它是从哪里来的
    # 首先打开解放号首页,然后搜索python
    # 查看第一条
    # 发现它的数据来源为:https://www.jfh.com/jfportal/workMarket/getRequestData
    # 而且里面有json数据,开始构造url
    
    # 首先是新建文件
    import csv
    import pprint
    import random
    
    import requests
    import time
    import json
    
    keyword = input('请输入要搜索的关键词:') # 输入关键词进行爬取
    
    #  新建文档
    f = open(f'20211102解放号数据-{keyword}.csv', mode='a', encoding='utf-8-sig', newline='')
    
    # csv写入器
    csvWriter = csv.DictWriter(f, fieldnames=[
        '标题',
        '编号',
        '类型',
        '投标人数',
        '发布日期',
        '截止日期',
        '状态',
        '价格',
        '详情页',
    ])
    # 写入表头
    csvWriter.writeheader()
    # 请求头
    headers = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36',
    }
    
    # 开始多页爬取
    for page in range(1, 11):
        time.sleep(random.randint(2,10))
        # 由于请求方式是post的,所以需要参数,这里也是多页爬取的关键
        data = {
            "putTime": "",
            "minPrice": "",
            "maxPrice": "",
            "isRemoteWork": "",
            "orderCondition": "0",
            "orderConfig": "1",
            "pageNo": page, # 页码
            "searchName": str(keyword), # 搜索的关键词
            "fitCode": "0",
            "workStyleCode": "",
            "jfId": "235066803",
            "buId": "",
            "currentBuid": "",
            "jieBaoType": "",
            "login": "1",
            "city": "",
            "orderType": "",
            "serviceTypeKey": "",
            "webSite": "",
            "webSign": "",
            "source": "1",
        }
    
        # 构造url
        url = 'https://www.jfh.com/jfportal/workMarket/getRequestData' # 这是请求的url,不是所看到的那些网址
    
        response = requests.get(url=url, headers=headers, data=data)
        # 打印json看是否有需要的数据
        # print(response.json()) #确实有需要的数据,通过分析,数据都存储在resultList里
        # 把数据剔提取出来
        results = response.json()['resultList'] # 至此我们已经取到了数据
        # print(results) # 是个列表,列表中的每个元素都是字典
    
        for item in results:
            pprint.pprint(item)
            # 构造详情页
            detail_page = f'https://www.jfh.com/jfportal/orders/jf{item["orderNo"]}'
    
            # 由于可能有些信息是没有截止日期的,所以运行的时候可能会报错,用判定
            # if item['bidValidtime']: # 有数据才进行下一步操作
            # 这里我用try
            try:
                dataNeed = {
                    '标题':item['orderName'],
                    '编号':item['orderNo'],
                    '类型':item['techDirection'],
                    '投标人数':item['bookCount'],
                    '发布日期':item['formatOrderTime'],
                    '截止日期':item['bidValidtime'],
                    '状态':item['bidValidTimeOut'],
                    '价格':item['planPrice'],
                    '详情页':detail_page,
                }
                # 写入到csv文档里
                csvWriter.writerow(dataNeed)
                print(dataNeed)
            except:
                pass # 错误就直接跳过
            print(str(keyword) + '爬取完毕!')

    保存后的数据如下:

    可视化可以拿价格可视化一下,提高一下自己学习的欲望。

  • 相关阅读:
    Linux系统-bash: ifconfig: command not found问题
    cookie、localStorage、sessionStorage生命周期
    Mybatis批量操作org.springframework.jdbc.BadSqlGrammarException异常问题
    Hibernate Validator表单验证javax.validation.UnexpectedTypeException异常问题
    Mybatis-Plus分页插件功能无效问题
    判断List集合中是否包含重复记录不生效问题
    记录org.springframework.security.authentication.BadCredentialsException: Bad credentials异常问题
    SecurityContextHolder.getContext().getAuthentication()显示anonymousUser匿名用户问题
    Spring实现AOP的4种方式
    解决PKIX:unable to find valid certification path to requested target 的问题
  • 原文地址:https://www.cnblogs.com/mafu/p/15501066.html
Copyright © 2011-2022 走看看