xpath解析实战--爬取免费简历模板

太菜了,写了一上午。遇到了无数的问题,好在没有放弃,一一解决了。
首先是xpath解析出现问题,在原网站上用xpath工具可以顺利地解析出a标签里面的链接,但在pycharm上获取的是空列表。于是乎将原网页代码爬取下来,观察了要获取内容所对应的标签,发现标签与原网页是一样的,但是标签的class不同,于是将xpath解析里面的class属性改掉,最终获取到了目标链接。
然后是乱码问题,由于个人疏忽,没有对for循环内部的响应数据进行手动设定编码格式。找了很多资料,没有找到解答,最后才发现这个简单问题。
总的来说,xpath解析数据难度不大,难的是做项目的时候,并不是单一的知识点,而是众多知识点混杂在一起,我们要在学习中进行有意识地积累,这样可以尽可能避免一些简单问题,也方便自己进行排错。

# 开发时间:2020/12/27 23:03
# 开发工具:PyCharm
# 开发者:Friday
#网址: https://sc.chinaz.com/jianli/free.html

import requests
from lxml import etree
import os

if __name__ == "__main__":
    #获取网页源码到本地
    original_url = 'https://sc.chinaz.com/jianli/free.html'
    response = requests.get(url=original_url)
    response.encoding = "utf-8"
    page_text = response.text
    headers = {
        'Referer': 'http://pic.netbian.com/4kmeinv/index_2.html',
        'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
    }
    # url = 'https://sc.chinaz.com/tag_jianli/free.html'
    # response = requests.get(url = url,headers = headers).text
    # print(response)
    # print(page_text)
    tree = etree.HTML(page_text)
    url_list = tree.xpath('//div[@class="box col3 ws_block"]/a/@href')

    if not os.path.exists('./jianlimoban'):
        os.mkdir('./jianlimoban')

    for url in url_list:
        url = 'http:' + url + '#down'
        response = requests.get(url=url,headers=headers)
        response.encoding = "utf-8"
        response = response.text
        tree = etree.HTML(response)
        #获取最终下载地址
        add = tree.xpath('//ul[@class="clearfix"]/li[8]/a/@href')[0]
        #获取文件名
        name = tree.xpath('//div[@class="ppt_tit clearfix"]/h1/text()')[0]+ '.rar'
        print(name)

        wenjian = requests.get(url=add,headers=headers).content
        file_path = './jianlimoban/' + name
        with open(file_path,'wb') as fp:
            fp.write(wenjian)
            print("over!")

结果图

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值