python读取图片信息_糖炒栗子大的好还是小的好

python读取图片信息_糖炒栗子大的好还是小的好这是一篇最基础的爬虫实例,大佬就不要看了,比较适合零基础或者有少量基础同学阅读

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

python读取图片信息_糖炒栗子大的好还是小的好

1.首先我们需要先导入所需要的包,没有的话可以【 pip install ~】 来获取

import requests
from lxml import etree

2.接下来我们要进行UA伪装,伪装的目的就是把电脑伪装成人 因为很多wangzahn都有反扒机制,不进行伪装的话根本就无法进行爬取信

#进行ua伪装
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}

3.准备工作已经完成,告诉我们要访问的URL(告诉电脑去哪里执行以下的代码)

URL = 我们所常说的网址

#指定url
url = '网址'

4.有了UA伪装以及URL,接下来我们就要去访问目标网站,把网站源代码给拿下来

#发起请求
resposne = requests.get(url=url,headers=headers)

5.因为网站源码拿下来的时候出现了乱码,所以对乱码进行处理并把无乱码网站源码赋值给data

#获取源码后处理乱码
resposne.encoding='gbk'
data = resposne.text

 然后就是开始进行数据解析了

6.将抓取下来的网站源码数据加载etree对象中

tree = etree.HTML(data)

 7.然后将使用xpath()函数结合表达式进行标签定位,提取指定内容

我们这里是只要存储图片的<li></li>区域就可以了,有不懂的可以去查一下 很简单的

python读取图片信息_糖炒栗子大的好还是小的好

li_list = tree.xpath('/html/body/div[2]/div[1]/div[3]/ul/li')

1.属性定位
定位div中属性名为href,属性值为‘www.baidu.com’的div标签: @属性名=属性值
/html/body/div[href=’www.baidu.com’] href为属性名 ‘www.baidu.com’为属性值

2. 索引定位
在href值a的div标签下有很多的li标签,想要定位到第二个li标签,li标签后面用中括号加索引值(这里的索引值是从1开始的)
/html/body/div[href=’a’]li[2]

3. 取文本内容
/text()   获取标签下直系的标签内容
//text()  获取标签中所有的文本内容
string()  获取标签中所有的文本内容

 8.然后就是对该区域进行遍历

#进行遍历
for li in li_list:
    #获取图片名称以及图片后缀 .jpg
    name = li.xpath('./a/b/text()')[0] + '.jpg'
    #获取图片的存储位置,别忘了加上前面的域名(不知道叫啥,前缀)
    href = 'https://pic.netbian.com/' + li.xpath('./a/img/@src')[0]
    #这个是再次模仿人去获取图片信息,这次的url是单纯图片存储位置
    img_response = requests.get(url=href,headers=headers)
    #这个是对图片信息进行编译
    img_data = img_response.content

9.经过遍历循环每个图片信息都可以获取,接下来就是进行存储

#上面讲解
for li in li_list:
    name = li.xpath('./a/b/text()')[0] + '.jpg'
    href = 'https://pic.netbian.com/' + li.xpath('./a/img/@src')[0]
    img_response = requests.get(url=href,headers=headers)
    img_data = img_response.content
    # print(img_data)
#持久化存储
    #定义存储位置,我这里是当级目录名字是拼音tupian  
    #注意:tupian后的斜杠一定要添加,这样才可以放入里面
    img_path = './tupian/' + name
    #定义打开方式,存储位置 'wb'是因为图片信心为二进制,所以需要加b,b是二进制英语首字母
    with open(img_path,'wb') as f:
        f.write(img_data)
    print(name + '下载成功')

10.然后就是点击运行等待就可以了

python读取图片信息_糖炒栗子大的好还是小的好

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194879.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Integer 转成Long类型数据

    Integer 转成Long类型数据Intege 的数据有一个 longValue 的函数 可以将其转换成 long 类型的数据代码如下 publicstatic Stringargs nbsp nbsp nbsp nbsp nbsp nbsp Integera 1 nbsp nbsp nbsp nbsp nbsp nbsp System out println a nbsp nbsp nbsp nbsp nbsp nbsp longb a longValue nbsp nbsp nbsp nbsp nbsp nbsp System out p

    2025年11月2日
    4
  • JS闭包的作用与优缺点[通俗易懂]

    JS闭包的作用与优缺点[通俗易懂]一、什么是闭包闭包是指一个函数和对其周围状态(lexicalenvironment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。简单来说就是指有权访问另一个函数作用域中变量的函数。举个例子:functionfn(){varnum=10;functionfun(){console.log(num);}fun();}fn();这就是一个闭…

    2025年6月20日
    7
  • c++ stringstream ss()[通俗易懂]

    c++ stringstream ss()[通俗易懂]定义了三个类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。本文以stringstream为主,介绍流的输入和输出操作。主要用来进行数据类型转换,由于使用string对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库的数据类型转换而言,更加安全、自动和直接。一、从string对象str中读.

    2022年5月22日
    66
  • Linux 查看当前时间

    Linux 查看当前时间

    2021年10月29日
    67
  • Android常用对话框大全——Dialog「建议收藏」

    Android常用对话框大全——Dialog「建议收藏」唉!最近一直忙碌着写项目以至于都没有空出点时间来总结近期的学习,记录学习到的东西…现在正好有时间了就该好好记录一下学习的过程了。今天就来谈谈开发中经常用的到的一个控件——Dialog,对话框一般我们就用来提示一些信息给用户,让用户自主选择,或者在一些操作不可逆的情况下我们提示用户是否继续操作,下面就让我们一起来学习吧。老司机发车啦…一:最简单的对话框AlertDialogdialog=new

    2022年5月5日
    55
  • 1. Git安装与配置

    1. Git安装与配置本文介绍Windows下的Git安装与配置

    2022年6月1日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号