网址:http://www.gerenjianli.com/moban/index.html
需求
小王和他的同们要毕业了,想要一些好看有免费的简历模板,于是找了这个网站,他想下载这个网站的全部简历模板。
分析
网站结构较简单,只需要点击简历图片跳转进入详情页界面即可看到下载按钮,点击下载按钮即可下载简历模板,第一步只需要在首页中找到详情页的url,然后模拟浏览器对详情页的url发起请求,然后找到下载按钮对应的url地址,对这个地址发起请求即可。
本文采用xpath解析方式来获取详情页url和下载按钮的url,注意查看页面编码。
代码
import requests
from lxml import etree
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.114 Safari/537.36 '
}
for pagenum in range(1,3): #此处可更改范围,此处下载1~2页为例
if pagenum ==1:
url = 'http://www.gerenjianli.com/moban/index.html'
else:
url = 'http://www.gerenjianli.com/moban/index_'+ str(pagenum) +'.html'
page_text = requests.get(url=url, headers=headers)
page_text.encoding= 'gb2312' #设置编码格式
page_text=page_text.text
# print(page_text)
tree = etree.HTML(page_text) #实例化一个etree对象,将首页源码加载到该对象中。
li_list = tree.xpath('//div[@class="list_boby"]/ul[@class="prlist"]/li') #找到简历模板对应的li标签
for li in li_list: #循环遍历所有的li标签,定位到简历对应的名字和简历详情页的url
resume_name = li.xpath('./div/a/img/@alt')[0]
resume_src = li.xpath('./div/a/@href')[0]
download_text=requests.get(url=resume_src,headers=headers).text
dtree = etree.HTML(download_text) #实例化一个etree对象,将详情页的源码加载到该对象中。
dsrc = dtree.xpath('//div[@class="donwurl2"]/a/@href')[0] #定位到下载按钮对应的url
result = requests.get(url=dsrc,headers=headers).content #发起请求
download_path = 'D:\\文件\\简历\\' + resume_name + '.docx' #存储到本地
with open(download_path,'wb') as fp:
fp.write(result)
print(resume_name+'下载成功!')
结果