彼岸网壁纸抓取

news/2024/9/21 6:01:57/文章来源:https://www.cnblogs.com/suifeng2000/p/18353288

彼岸网壁纸抓取

创建时间:2024-08-11

一、代码

1.1 代码

import os
import random
import timeimport requests
from lxml import etreeurl = 'http://pic.netbian.com/'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}def get_html(url):response = requests.get(url, headers=header)response.encoding = response.apparent_encoding# print(response.text)tree = etree.HTML(response.text)return treetree = get_html(url)
tp_urls = tree.xpath('//ul[@class="clearfix"]/li/a/@href')
titles = tree.xpath('//ul[@class="clearfix"]/li/a/@title')
for tp, title in zip(tp_urls, titles):# 拼凑完整的urlimg_url = 'http://pic.netbian.com' + tptree = get_html(img_url)img_ = tree.xpath('//a[@id="img"]/img/@src')[0]img_urls = 'http://pic.netbian.com' + img_print(img_urls)# exit()path = os.path.join('./彼岸img', title.replace(" ", "_").replace("*", "") + '.jpg')with open(path, 'wb') as f:f.write(requests.get(img_urls).content)print(title)time.sleep(random.randint(1, 3))

1.2 代码

"""
地址:http://www.netbian.com/"""
import os#  导入 requests 和 etree 模块
import requests
from lxml import etreeclassify = "meinv"
start_page = 1
end_page = 6# 确保 "wallpaper" 文件夹存在,
folder_path = f"./wallpaper/{classify}"
if not os.path.exists(folder_path):os.makedirs(folder_path)#  循环下载n页的图片
for i in range(start_page-1, end_page):url = f"http://www.netbian.com/{classify}/"  # 网站上分类的url地址#  第一页的地址和后面页的地址不同,需要分别处理if i == 0:url = url + "index.htm"i += 1else:url = url + "index_" + str(i + 1) + ".htm"#  设置协议头headesp = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.35'}#  发送get请求并获取响应且设置编码resp = requests.get(url, headers=headesp)resp.encoding = resp.apparent_encoding#  将响应内容解析为etree对象xp = etree.HTML(resp.text)#  获取每页中的图片详情页链接img_url = xp.xpath("/html/body/div[@class='wrap clearfix']/div[@id='main']/div[@class='list']/ul/li/a/@href")print(img_url)for n in img_url:#  根据图片详情页链接再次发送get请求并获取图片地址和名称resp = requests.get('http://www.netbian.com' + n)resp.encoding = resp.apparent_encodingxp = etree.HTML(resp.text)img_urls = xp.xpath('//div[@class="pic"]/p/a/img/@src')img_name = xp.xpath('//div[@class="pic"]/p/a/img/@alt')# 下载并保存到目标文件夹for u, n in zip(img_urls, img_name):print(f'图片名:{n} 地址:{u}')img_resp = requests.get(u)with open(f'./{folder_path}/{n}.jpg', 'wb') as f:f.write(img_resp.content)

1.3 效果1

1.4 效果2

二、代码学习

2.1 设置了请求的头部信息,模拟浏览器访问。

url = 'http://pic.netbian.com/'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}

2.2 定义了一个 get_html 函数

用于获取网页的 HTML 内容,并处理编码问题,同时使用 lxmletree 模块将其转换为可解析的树结构。

def get_html(url):response = requests.get(url, headers=header)response.encoding = response.apparent_encoding# print(response.text)tree = etree.HTML(response.text)return tree

2.3 通过访问首页获取图片的链接和标题信息。

tree = get_html(url)
tp_urls = tree.xpath('//ul[@class="clearfix"]/li/a/@href')
titles = tree.xpath('//ul[@class="clearfix"]/li/a/@title')

2.4 处理获取到的每个图片详情页链接

再次请求获取真实的图片链接,并将图片保存到本地指定的路径。

for tp, title in zip(tp_urls, titles):# 拼凑完整的urlimg_url = 'http://pic.netbian.com' + tptree = get_html(img_url)img_ = tree.xpath('//a[@id="img"]/img/@src')[0]img_urls = 'http://pic.netbian.com' + img_print(img_urls)# exit()path = os.path.join('./彼岸img', title.replace(" ", "_").replace("*", "") + '.jpg')with open(path, 'wb') as f:f.write(requests.get(img_urls).content)print(title)time.sleep(random.randint(1, 3))'# 在保存图片的过程中,为了避免频繁请求对服务器造成过大压力,我们设置了随机的等待时间。

2.5 优化代码

  1. 定义了图片分类 classify 以及起始页 start_page 和结束页 end_page 的变量,用于控制爬取的范围。
  2. 增加了根据分类创建文件夹的代码,以确保图片保存到特定分类的文件夹中。
  3. 针对不同页码构建了不同的 URL 格式,以处理第一页和后续页的 URL 差异。

三、每日一学

在爬取图片时如何避免被封禁?

  1. 控制访问频率:不要过于频繁地发送请求。就像前面代码中使用 time.sleep(random.randint(1, 3)) 来随机暂停 1 到 3 秒,这样可以模拟人类的正常访问行为。
    例如,如果您在短时间内发送大量请求,网站可能会认为这是恶意攻击而封禁您的 IP 。
  2. 设置合理的请求头:确保 User-Agent 等请求头字段看起来像是正常的浏览器发送的请求。
    比如,不同的浏览器和操作系统有不同的 User-Agent 特征。使用常见的浏览器 User-Agent 可以降低被识别为爬虫的风险。
  3. 使用代理 IP:如果您的访问频率较高,可以使用代理 IP 来切换访问的来源,避免单个 IP 被封禁。
    但要注意使用合法可靠的代理服务。
  4. 逐步增加访问量:不要一开始就进行大量的请求,而是逐渐增加请求的数量和频率。
    比如,先从少量的请求开始,观察网站的反应,然后再适当增加。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】【THM】Malware Analysis(恶意软件分析)(还在学)

二进制安全入坟【笔记】【THM】Malware Analysis(恶意软件分析) 探索恶意软件的世界,分析恶意软件如何感染系统并造成破坏。 恶意软件分析就像猫捉老鼠的游戏。恶意软件的作者一直在设计新的技术来躲避恶意软件分析师的眼睛,而恶意软件分析师也一直在寻找识别和抵消这些技术…

一次性能优化,单台4核8G机器支撑5万QPS

这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。 如何优化 首先大家要明确的一点是,脱离需求谈优…

豆瓣短评榜单短评下载

豆瓣短评榜单短评下载 创建时间:2024-08-07 一、完整代码 import requests from lxml import etreedef get_html(main_url):header = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/12…

阿里云ACK托管版初始化

阿里云ACK托管版配置图例阿里云1.30.1版本 集群配置在创建过程中注意几个选项付费类型 (按量, 包年包月) 版本 选择VPC 网络插件 节点交换机

电机原理概要

深入理解无刷直流电机矢量控制技术 第一章 电机原理概要 1.1 左手定则 判断通电导体在磁场中的受力。导体受力 $ F(N) $为 \[F=B\times I \times L \]式中,\(B\)为磁通密度($ Wb/m^2\();\)I\(为电流(\)A\();\)L\(为处于磁场中导体的长度(\)m$)。 1.2 右手螺旋定则 右手…

USB协议详解第4讲(USB描述符-标准配置描述符)

1.USB描述符 USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。今天主要是学习USB标准配置描述符的组成。 2.标准配置描述符组成 一个USB设备至少有一个或者多个配置,这一点可以从设备描述符的最后…

开启/关闭子系统的命令

WSL 下的运行 我们需要怎么关闭或者开启子系统呢 用管理员权限打开的命令行 先用 wsl -l -v查看当前有无任务我这边是关闭的,于是我想把它开上,输入net start LxssManager已经开启,接下来去想去的地方操作就好了 如果要关掉子系统呢 直接net stop LxssManager即可关闭本文来…

解决LocalDateTime返回前端数据为数组结构的问题

问题现象解决办法如下 1、使用@JsonFormat @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")结果2、使用SpringMVC提供的ExtendMessageConverters @Slf4j @Configuration public class WebMvcConfig extends WebMvcConfigurationSupport…

windows网络正常,但是网络图标变为飞机

本文来自博客园,作者:东岸,转载请注明原文链接:https://www.cnblogs.com/donghao99/p/18353254

气象爱好者必备网址(持续更新)

目录测站资料雷达资料探空图资料学习教程论坛/BBS/个人站天气模拟器 测站资料 q-weather 中山市气象公众网 深圳市气象局(台)-自动站查询 雷达资料 NMC-全国雷达回波反射率组合图 广州天气PDA版-雷达回波图 广州市海珠区Swift 江门雷达(相控阵雷达) NaTyphoon-雷达回波反射…

springMVC 请求流程解析

` @SuppressWarnings("deprecation") protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { // 实际处理时用的请求,如果不是上传请求,则直接使用接收到的 request,否则封装成上传的 request HttpServletRequ…

时间分辨率、采样率与采样深度三者关系理解

在脑成像研究中,分辨率和采样率是一个经常被提及的概念,但分辨率和采样率有时候容易混淆。除此之外,采样深度这个重要的概念却很少被提及。因此,本篇随笔主要内容是为阐述上述三者的概念以及相关联系。 概念的明晰 了解关系之前,首先需要明晰三者的定义概念,其中分辨率仅…