栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

简单学会!xpath的使用以及获取图片以及保存至本地

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单学会!xpath的使用以及获取图片以及保存至本地

前言

xpath是啥,其全称为XML Path Language,即XML路径语言。这是在XML文档中查找信息的语言,可以用来在获取的页面源代码中提取页面信息。我觉得用起来也很简洁,它返回的对象是一个列表。

准备

这是等下要用到的库,requests和urllib用于请求并返回页面信息,lxml库xpath做解析用,csv用来保存csv文件,time是为了后面的缓冲,以免访问太过于频繁。如果没有安装的话,在控制台处pip install 就可以了。

import requests 
from lxml import etree
import csv
import time
import urllib.request
定义保存的函数

这次的内容包括标题、作者、描述,所以定义的函数的参数就如图示,值得注意的是,这里用utf-8-sig写入csv文件,我用utf-8写入时出现乱码,所以加了一个-sig,sig是标签的意思,因为有可能python写入csv时杂夹一些标签,这样就容易出现乱码,然后用遍历,一行一行的写入。

def save(title,author,describe):
    with open("宠物领养信息.csv",'a',encoding='utf-8-sig',newline = "") as f:
        w=csv.writer(f)
        for i in range(0,len(title)):
            w.writerow([title[i],author[i],describe[i]])
获取请求

这一步主要步骤就是:

1.设置目标

2.设置请求头headers,但是其实也可以不用

3.用requests或者urllib获取请求

这是用requests

r=requests.get(URL,headers=headers).text

这是用urllib

request=urllib.request.Request(url,headers=headers)
    t= (urllib.request.urlopen(request)).read()
解析信息

解析信息用xpath就很方便简洁

首先创建一个lxml.etree._Element对象

r=etree.HTML(r)

然后用xpath定位结点,text()获取文本内容例如下面这样

title=r.xpath('//h2[@]/a/text()')

如果要提取图片的话,就需要获取图片的地址,一般都是在结点属性那里,那么获取结点属性内容,可以如下,@后面就是跟着结点属性

href=r.xpath('//div[@]/a/img/@src')
保存图片

虽然上面定义了一个保存到csv文件的函数,但是那主要是保存文本内容的,所以现在用下面的代码保存图片至文件夹,这个文件夹要放在和这个代码文件一个位置,因为我没有指定路径

n=1
for i in href:
        r = requests.get(i)
        with open(f'./img//{n}.jpg', 'wb') as f:
            f.write(r.content)
        n=n+1
最后

整个过程大概就是这样了,xpath是很好用,也很简洁,但是有时候获取到的数据可能会比较杂,要经过一定的处理。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942989.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号