安装 requests 库: 他们三个 按一个就行
pip install requests
或者
pip3 install requests
或者
conda install requests
代码
每次只可以下载一页的 简历模板 需要手动修改 id = ###
import requests
from lxml import etree
import osif __name__ == "__main__":# 创建一个文件夹,保存pptif not os.path.exists('./ppt模板'):os.mkdir('./ppt模板')# UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \AppleWebKit/537.36 (KHTML, like Gecko) \Chrome/96.0.4664.93 Safari/537.36'}url = 'https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page=1'# 发起请求page_response = requests.get(url=url, headers=headers)# 手动设置响应数据编码格式为utf-8page_response.encoding = 'utf-8'# 获取响应数据。text方法返回的是字符串形式的响应数据page_text = page_response.text# 数据解析tree = etree.HTML(page_text)div_list = tree.xpath('//div[@id="main"]/div/div')for div in div_list:ppt_title = div.xpath('./p/a/text()')[0] + '.rar'# ppt_title = ppt_title.encode('iso-8859-1').decode('gbk')ppt_src = 'https:' + div.xpath('./p/a/@href')[0]print(ppt_src)# 向PPT详情页发起请求ppt_response = requests.get(url=ppt_src, headers=headers)ppt_response.encoding = 'utf-8'ppt_page_text = ppt_response.textppt_tree = etree.HTML(ppt_page_text)# 解析下载地址ppt_download_url = ppt_tree.xpath('//ul[@class="clearfix"]/li[1]/a/@href')[0]print(ppt_download_url)# 访问下载地址ppt_data = requests.get(url=ppt_download_url, headers=headers).content# 设置存储路径ppt_path = './ppt模板/' + ppt_titlewith open(ppt_path, 'wb') as fp:fp.write(ppt_data)print(ppt_title, "下载完成!")# print("第%d页下载完毕!" % 1)
可以同时下载很多简历 page每次自增加一
import requests # 导入requests库,用于发送HTTP请求
from lxml import etree # 导入etree模块,用于解析HTML或XML文档
import os # 导入os模块,用于与操作系统交互,如创建文件夹if __name__ == "__main__": # 判断是否为主程序运行# 创建一个文件夹,保存pptif not os.path.exists('./jianli'): # 检查文件夹是否存在os.mkdir('./jianli') # 如果不存在,则创建文件夹# UA伪装,设置请求头中的User-Agent字段,模拟浏览器访问headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}# 定义起始页和结束页,用于分页请求start_page = 1end_page = 10 # 例如,你想要下载前10页的内容for page in range(start_page, end_page + 1): # 循环遍历每一页# 动态生成URL,根据页码构造请求地址url = 'https://aspx.sc.chinaz.com/query.aspx?keyword=%E5%85%8D%E8%B4%B9&issale=&classID=864&page={page}'# 发起请求,获取页面内容page_response = requests.get(url=url, headers=headers)# 手动设置响应数据编码格式为utf-8,确保正确解析中文page_response.encoding = 'utf-8'# 获取响应的文本内容page_text = page_response.text# 数据解析,使用etree解析HTML文档tree = etree.HTML(page_text)# 使用XPath表达式定位到包含PPT信息的div元素列表div_list = tree.xpath('//div[@id="main"]/div/div')for div in div_list: # 遍历每个div元素# 提取PPT标题,并添加.rar后缀,假设下载的是压缩包ppt_title = div.xpath('./p/a/text()')[0] + '.rar'# 提取PPT详情页的链接ppt_src = 'https:' + div.xpath('./p/a/@href')[0]print(ppt_src) # 打印详情页链接# 向PPT详情页发起请求ppt_response = requests.get(url=ppt_src, headers=headers)ppt_response.encoding = 'utf-8' # 设置响应编码ppt_page_text = ppt_response.text # 获取详情页内容ppt_tree = etree.HTML(ppt_page_text) # 解析详情页HTML# 解析下载地址,假设下载链接在特定的XPath位置ppt_download_url = ppt_tree.xpath('//ul[@class="clearfix"]/li[1]/a/@href')[0]print(ppt_download_url) # 打印下载链接# 访问下载地址,获取PPT文件内容ppt_data = requests.get(url=ppt_download_url, headers=headers).content# 设置存储路径ppt_path = './jianli/' + ppt_titlewith open(ppt_path, 'wb') as fp: # 以二进制写入模式打开文件fp.write(ppt_data) # 将PPT文件内容写入文件print(ppt_title, "下载完成!") # 打印下载完成信息print("所有页面下载完毕!") # 打印所有页面下载完成信息
参考: python爬虫练习(xpath爬取站长素材中的免费简历模板)_爬取站长素材中免费简历模板-CSDN博客