您的位置:首页 > 汽车 > 新车 > python—爬虫爬取图片网页实例

python—爬虫爬取图片网页实例

2024/9/8 9:08:09 来源:https://blog.csdn.net/2301_77698138/article/details/140618658  浏览:    关键词:python—爬虫爬取图片网页实例

Python爬取图片是一个常见的网络爬虫应用场景。这里,我将提供一个简单的示例,这段代码是一个Python脚本,用于从网站抓取图片并保存到本地文件夹中。它使用了几个Python库来完成任务,包括os.path(尽管在代码片段中直接导入的是os模块,但用于检查文件夹是否存在和创建文件夹),fake_useragent(用于生成随机的用户代理字符串以模拟不同的浏览器请求),requests(用于发送HTTP请求),以及lxml的etree(用于解析HTML内容)。
以下为爬虫爬取某网页的相关代码与详解。

1.导入必要的库:

import os:实际上,代码中使用了os模块而不是os.path,但通常os.path被用于路径操作。这里,os模块用于检查文件夹是否存在和创建文件夹。
import fake_useragent:是一个 Python 包,它用于生成随机的用户代理(User-Agent)字符串。用户代理字符串是一种在HTTP请求中发送给服务器,以标识发起请求的客户端(如浏览器)的类型、版本、操作系统等信息的字符串。
import requests:用于发送HTTP请求。这是Python中非常流行的HTTP客户端库,简单易用。
from lxml import etree:用于解析HTML和XML文档。它提供了强大的XPath和XSLT功能,使得从HTML文档中提取信息变得容易。
(注意:如有相关库未安装,可通过pip install操作来进行安装,例如安装requests库,我们可以pip install requests,直接进行安装就可以了。)

import os.pathimport fake_useragent
import requests
from lxml import etree

2.设置请求头:

通过 fake_useragent.UserAgent().random 生成一个随机的用户代理字符串,并将其设置为请求头的 User-Agent。这有助于伪装爬虫的身份,减少被网站封禁的风险。

# UA伪装
head = {"User-Agent": fake_useragent.UserAgent().random
}

3.定义全局变量:

pic_name = 0:用于生成图片文件的名称。这里我们从0开始生成,每添加一张照片名称往上加1.

pic_name = 0

4.定义request_pic函数:

这个函数接受一个URL作为参数,用于抓取该URL指向的页面上的图片。
使用requests.get发送请求,并将响应内容赋值给res_text。
使用etree.HTML解析HTML内容,并存储在tree变量中。
通过XPath表达式查找页面上的图片链接(假设它们位于

下的
  • 中的
  • 元素内)。
    遍历找到的
  • 元素,提取每个图片链接,并发送另一个请求来获取图片内容。
    将图片内容写入到本地文件中,文件名由pic_name变量生成,并递增pic_name以生成不同的文件名。

def request_pic(url):# 2.发送请求response = requests.get(url, headers=head)# 3.获取需要的数据res_text = response.text# 4.数据解析tree = etree.HTML(res_text)# print(res_text)li_list = tree.xpath("//div[@class='slist']/ul/li")print(li_list)for li in li_list:# 1.urlimg_url = "https://pic.netbian.com"+"".join(li.xpath(".//a/img/@src"))print(img_url)# 2.发送请求img_response = requests.get(img_url, headers=head)# 3.获取需要的数据img_content = img_response.contentglobal pic_namewith open(f"pictures/{pic_name}.jpg", "wb") as fp:fp.write(img_content)pic_name += 1

5.主程序:

检查是否存在名为pictures的文件夹,如果不存在则创建它。
定义一个起始URL,并循环遍历多个分页URL(从index_2.html到index_9.html)。对每个分页URL调用request_pic函数来抓取图片。

if __name__ == '__main__':if not os.path.exists("pictures"):os.mkdir("pictures")# 1.urlurl = f"https://pic.netbian.com/4kdongman/"# request_pic(url)for i in range(2,10):next_url = f"https://pic.netbian.com/4kdongman/index_{i}.html"request_pic(next_url)pass

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com