IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 爬虫——xpath爬取图片 -> 正文阅读

[Python知识库]爬虫——xpath爬取图片

简介

XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。在使用XPath前我们需要大致了解HTML / XHTML;XML / XML 命名空间,的相关知识。

什么是 XPath?
XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素
XPath 是一个 W3C 标准

XPath 路径表达式:
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

XPath定位方法

首先我们需要导入lxml库

from lxml import html

实例化etree对象

etree = html.etree

将本地页面原码加载到etree对象中

tree = etree.parse('baidu.html')

定位的几种格式:
使用 .xpath()

# 1获取title对象 --> /:表示的是从根节点开始定位。表示的是一个层级。
xp = tree.xpath('/html/head/title/text()')
print(xp)

# 2获取body中所以div标签 --> /:表示的是从根节点开始定位。表示的是一个层级。
xp = tree.xpath('//p/text()')
print(xp)

# 3.3获取指定标签class="song"的div标签 --> /:表示的是从根节点开始定位。表示的是一个层级。
xp = tree.xpath('/html/body/div[@class="song"]')

# 4获取指定数据"杜牧"索引定位 --> /:表示的是从根节点开始定位。表示的是一个层级。
# 取文本:
# /text()获取的标签中直系文本里内容
# //text()标签非直系的文本内容(所有的文本内容)
xp = tree.xpath('/html/body/div[@class="tang"]/ul/li[5]//text()')[0]

# 5获取img标签中的src --> /:表示的是从根节点开始定位。表示的是一个层级。
xp = tree.xpath('//div[@class="song"]/img/@src')[0]

爬取图片

这里爬取的是糗事百科热图前三页的内容
爬取前三页的内容我们使用循环,并使用 ==.format()==来切换页面url。

获取前三页url

url = 'https://www.qiushibaike.com/imgrank/page/{}/'
for i in range(1,4):
	page_url = url.format(i)

总代码:

import requests
from lxml import html
import os
if __name__ == '__main__':

    # UA伪装
    header = {
       'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'
    }
    # 编写通用爬虫获取网页源码
    url = 'https://www.qiushibaike.com/imgrank/page/{}/'
	
	# 创建文件
    if not os.path.exists('QiutuLib'):
        os.mkdir('./QiutuLib')
	
	# 主体部分
    for i in range(1,4):
        page_url = url.format(i)
		
		# 建立网页链接
        response = requests.get(url=page_url,headers=header)
        ht = response.text

        # 实例化etree
        etree = html.etree
        # 加入html内容
        tree = etree.HTML(ht)

        page_list = tree.xpath('//div[@class="article block untagged mb15 typs_hot"]')
        print(len(page_list))
        for page in page_list:
            text = page.xpath('.//div[@class="thumb"]//img/@src')[0]

            pic_url = 'https:'+text
			# 再次链接图片url下载图片	
            resp = requests.get(url=pic_url,headers=header)
            pic = resp.content #转换为二进制流下载图片

            fileName = text.split('/')[-1]
            file_path = './QiutuLib/' + fileName
			# 保存文件
			# a表示追加,b换行但不隔行
            with open(file_path,'ab') as f:
                f.write(pic)


运行截图:
1

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2021-10-14 12:46:06  更:2021-10-14 12:46:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:22:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码