• python2使用bs4爬取腾讯社招


    目的:获取腾讯社招这个页面的职位名称及超链接 职位类别 人数 地点和发布时间

    要求:使用bs4进行解析,并把结果以json文件形式存储

    注意:如果直接把python列表没有序列化为json数组,写入到json文件,会产生中文写不进去到文件,所以要序列化并进行utf-8编码后写入文件。

    # -*- coding:utf-8 -*-
    import requests
    from bs4 import BeautifulSoup as bs
    import json
    
    url = 'https://hr.tencent.com/position.php?'
    params = {
        'start':'10'
    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
    }
    
    # 获取腾讯社招某个页面的页面源码
    html = requests.get(url, params = params, headers = headers).text
    
    # 创建soup对象,使用lxml解析器
    soup = bs(html,'lxml')
    
    # 选取类名为odd和even的tr标签
    result1 = soup.select('tr[class="odd"]')
    result2 = soup.select('tr[class="even"]')
    # 列表拼接 l = [1,2] + [3,4],则列表l为[1,2,3,4]
    result = result1 + result2
    
    # 把数据存放在列表里面,列表的每个元素都为一个字典
    l = []
    data = {}
    for item in result:
        # 获取标签的文本内容
        job = item.find_all('a')[0].get_text().encode('utf-8')
        category = item.find_all('td')[1].get_text().encode('utf-8')
        number = item.find_all('td')[2].get_text().encode('utf-8')
        address = item.find_all('td')[3].get_text().encode('utf-8')
        public_time = item.find_all('td')[4].get_text().encode('utf-8')
        # 获取标签的属性值
        link = item.find_all('a')[0].attrs['href']
        fulllink = ('https://hr.tencent.com/' + link).encode('utf-8')
        data['job'] = job
        data['category'] = category
        data['number'] = number
        data['address'] = address
        data['public_time'] = public_time
        data['fulllink'] = fulllink
        l.append(data)
        # 原来中文写不到文件里面的报错原因,没把python列表序列化为json数组
        # with open('tencent.json','a') as f:
        #   f.write(str(data) + '
    ')
    
    # 方法1存储数据,上面字典的值不用先进行utf-8编码
    # 把数据以json文件形式存储
    # f = open('tencent.json','a')
    # 把python列表序转化为json对象。本地操作常用的是load dump。网络操作常用的loads dumps,而loads常用来把json格式转化为python格式,dumps把python格式序列为json格式
    # dictdata = json.dumps(l,ensure_ascii=False)
    # 把json对象写入json文件
    # f.write(dictdata.encode('utf-8'))
    # f.close()
    
    # 把数据存入tencent.json文件内
    json.dump(l,open('tencent.json','a'),ensure_ascii=False)
    
  • 相关阅读:
    Mybatis 传入的参数为List
    IDEA 自动清除不使用的 引用包
    java List去除重复数据
    oracle 导出数据库报错 EXP-00002: 写入导出文件时出错 EXP-00000: 导出终止失败
    Tomcat修改窗口名
    Oracle忘记密码找回
    3springboot执行原理及自动装配原理
    2springboot第一个程序
    springboot项目有红叉,但是没有运行没有报错。
    1springboot与微服务
  • 原文地址:https://www.cnblogs.com/silence-cc/p/9296187.html
Copyright © 2020-2023  润新知