xpath解析:下载图片案例

#解析下载图片数据
import requests
from lxml import etree
import os
from bs4 import BeautifulSoup
if __name__=="__main__":
    url='https://pic.netbian.com/index_2.html'
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.50'}

    response=requests.get(url=url,headers=headers)
    # response.encoding = 'utf-8'########手动设定响应数据的编码格式,如果这种设定解决不了乱码问题呢?
    page_text=response.text
    # #开始解析数据
    # #  首先实例化一个etree对象
    tree=etree.HTML(page_text)#对象解析好了,并且也将即将被解析的源码数据加载到该对象当中了,下一步就是要解析了
    # #解析属性值试试。。
    li_list=tree.xpath('//div[@class="slist"]/ul/li')


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


    for li in li_list:
        # img_src=li.xpath('./a/span/img/@src')[0]#列表当中只有一个元素,因为我们定义到的img只有一个#################################################第一页
        img_src ="https://pic.netbian.com/"+li.xpath('./a/img/@src')[0]  # 列表当中只有一个元素,因为我们定义到的img只有一个
        # img_name=li.xpath('./a/b/text()')[0]
        # img_name=li.xpath('./a/@title')[0]#加上图片后缀########################################################################################第一页
        img_name = li.xpath('./a/img/@alt')[0]  # 加上图片后缀
        img_name=img_name.encode('iso-8859-1').decode('gbk')##将img-name单独encode成iso的编码,也可以将整体设定成这个;;就这两种方法随意试,哪种好用用哪个


        img_data = requests.get(url=img_src, headers=headers).content
        img_path = 'picLibs/' + img_name
        with open(img_path, 'wb') as fp:  #文件需要打开多次,每打开一次就要需要往文件夹里写入图片一次,循环外部创建一个文件夹:
            fp.write(img_data)
            print(img_name, "下载成功!")


        print(img_name,img_src)
        print()
    # soup = BeautifulSoup(p+age_text, 'lxml')  #用一个解析方法,拿到数据!!!
    # print(soup.select('div>a')[1].text)

猜你喜欢

转载自blog.csdn.net/leowutooo/article/details/125014057