Python批量爬取简历模板


前言

为了更好的掌握数据处理的能力,因而开启Python网络爬虫系列小项目文章。

  1. 小项目小需求驱动,每篇文章会使用两种以上的方式(Xpath、Bs4、PyQuery、正则)获取想要的数据。
  2. 博客系列完结后,将会总结各种方式。

一、需求

  1. 批量爬取简历
  2. 下载到本地文件中

二、分析

1. 查看网页源码(ctrl+u)

在这里插入图片描述

网页源码中有各简历下载模板地址,如下图。

在这里插入图片描述

2、进一步分析

进入具体简历模板页面

在这里插入图片描述

F12进行抓包 ,分析点击免费下载的具体流程。

在这里插入图片描述

分析接口
https://www.51386.com/jlmb/3860.html?act=reply
https://www.51386.com/jlmb/3860.html?act=succ(页面返回下载资源)
https://oss.51386.com/3860.doc?Expires=1667648595&OSSAccessKeyId=OpPa5NVGTtEGvNCR&Signature=KAMPsVBwfE6p1g0OZbvdSEDuwl0%3D(最后下载资源的请求路径)

在这里插入图片描述

分析js文件
https://img.51386.com/1802/head.js(ip统计来控制下载次数)

在这里插入图片描述

三、处理

获取简历模板url

from pyquery import PyQuery as pq
INDEX_URL = "https://www.51386.com/"

def get_download_url(code):
    doc = pq(code)
    # 通过-jlmblist class属性获取简历url
    content = doc(".jlmblist")
    resume_dict = {}
    for resume in content.items():
        title = resume("a").attr("title")
        url = resume("a").attr("href")
        # 这里拼接了直接形成第二个接口https://www.51386.com/jlmb/3860.html?act=suc
        resume_dict[title] = f"{INDEX_URL}{url}?act=succ"
    return resume_dict

下载简历

import requests
import re

def get_resume_url(url):
    headers ={
        "referer": "https://www.51386.com/jlmb/4020.html?act=down"
    }
    res = requests.request("GET", url, headers=headers)
    # print(res.text)
    # 正则拿到oss下载资源
    try:
        deal = re.compile(r'"color:#08c" href="(?P<oss_url>.*?)">点击这里</a>',re.S)
        result = deal.search(res.text)
        oss_url = result.group("oss_url")
    except Exception as e:
        print(f"正则获取oss_url失败,{e}")
    return oss_url

整体代码

# -*- encoding:utf-8 -*-
__author__ = "Nick"
__created_date__ = "2022/10/21"

"""
待补充
1、下载受限(统计ip来控制下载)---代理IP
"""

import requests
from pyquery import PyQuery as pq
import re


HEADER = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}
INDEX_URL = "https://www.51386.com/"

# 获取页面源码
def get_index_code(url):
    res = requests.request("GET",url=url, headers=HEADER)
    res.encoding = "utf-8"
    return res.text


# 获取简历下载地址
def get_download_url(code):
    doc = pq(code)
    content = doc(".jlmblist")
    resume_dict = {}
    for resume in content.items():
        title = resume("a").attr("title")
        url = resume("a").attr("href")
        resume_dict[title] = f"{INDEX_URL}{url}?act=succ"
    return resume_dict


# 获取简历下载地址oss_url
def get_resume_url(url):
    headers ={
        "referer": "https://www.51386.com/jlmb/4020.html?act=down"
    }
    res = requests.request("GET", url, headers=headers)
    # print(res.text)
    # 正则拿到oss下载资源
    try:
        deal = re.compile(r'"color:#08c" href="(?P<oss_url>.*?)">点击这里</a>',re.S)
        result = deal.search(res.text)
        oss_url = result.group("oss_url")
    except Exception as e:
        print(f"正则获取oss_url失败,{e}")
    return oss_url



# 下载简历
def get_download_resume(url,name):
    if url:
        res = requests.get(url,headers=HEADER).content
        f = open(f"resume/{name}.doc",'wb')
        f.write(res)
        f.close()
    else:
        print("oss资源获取失败")



if __name__ == '__main__':
    code = get_index_code(url="https://www.51386.com/jlmb/")
    resume_dict = get_download_url(code)
    try:
        for title, url in resume_dict.items():
            oss_url = get_resume_url(url)
            get_download_resume(oss_url,title,ip_dict)
    except Exception as e:
        print(e)



四、运行效果

请添加图片描述

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以使用Python的pandas和openpyxl库来实现批量爬取Excel内的数据。具体步骤如下: 1. 使用pandas库读取Excel文件,例如: ```python import pandas as pd data = pd.read_excel('filename.xlsx', sheet_name='Sheet1') ``` 其中,`filename.xlsx`为要读取的Excel文件名,`Sheet1`为要读取的工作表名。 2. 遍历读取到的数据,使用爬虫库(比如requests、beautifulsoup等)来爬取相应数据。例如: ```python import requests from bs4 import BeautifulSoup for index, row in data.iterrows(): url = row['url'] # 假设Excel文件中有一个名为'url'的列,存储了需要爬取数据的网址 response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 使用BeautifulSoup解析网页,提取需要的数据 # ... ``` 3. 将爬取到的数据写入Excel文件中。可以使用openpyxl库来实现。例如: ```python from openpyxl import Workbook wb = Workbook() ws = wb.active for index, row in data.iterrows(): # 爬取数据 # ... # 将爬取到的数据写入Excel文件 ws.cell(row=index+1, column=1, value=data1) ws.cell(row=index+1, column=2, value=data2) # ... wb.save('filename.xlsx') ``` 其中,`data1`、`data2`等为爬取到的数据。`ws.cell(row=index+1, column=1, value=data1)`表示将`data1`写入第`index+1`行第1列的单元格中。最后通过`wb.save('filename.xlsx')`保存写入的数据到Excel文件中。 以上是一个基本的批量爬取Excel内数据的流程,具体实现还需要根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值