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

爬虫——xpath爬取图片

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

爬虫——xpath爬取图片

目录
    • 简介
    • 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获取指定标签的div标签 --> /:表示的是从根节点开始定位。表示的是一个层级。
xp = tree.xpath('/html/body/div[@]')

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

# 5获取img标签中的src --> /:表示的是从根节点开始定位。表示的是一个层级。
xp = tree.xpath('//div[@]/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[@]')
        print(len(page_list))
        for page in page_list:
            text = page.xpath('.//div[@]//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)


运行截图:

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

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

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