爬取桌面壁纸()
新人贴哈!刚刚学完如何爬取图片。
前言
1、本人作为一名初学者,爬取网页仅做学习
2、代码仅供参考,多有不足望指教
3、可自行更换爬取始末页以及某页中图片的爬取始页,代码中有注释
4、需要在项目路径下自己创建爬取图片保存路径,如代码所示
代码还有很多不足,请大佬们宽容见谅哈.
import requests
from lxml import etree
import re
import json
from concurrent.futures import ThreadPoolExecutor
domain = "https://desk.zol.com.cn"
def get_detail_href(url):
"""
该函数负责获取到每一个详情页的href的值
"""
resp = requests.get(url)
resp.encoding = "gbk"
et = etree.HTML(resp.text)
# 获取详情页的地址
hrefs = et.xpath("//ul[@class='pic-list2clearfix']/li/a/@href") # 这里有点问题所以无法执行
# 处理一下href. 需要添加域名
new_hrefs = []
# 去掉最前面得两个li
del hrefs # 不算后面哪个
# del hrefs 删除一个后会形成一个新得列表
# del hrefs
for href in hrefs:
new_hrefs.append(domain + href)
print(href)
return new_hrefs
def get_img_srcs(href):
"""
访问每一个详情页. 得到每个详情页背后对应的一组图片的下载路径
"""
resp = requests.get(href)
resp.encoding = "gbk"
obj = re.compile(r"var deskPicArr.*?=(?P<desk_str>.*?);", re.S)
# 提取页面中关于图片路径的信息
result = obj.search(resp.text).group("desk_str")
desk_dict = json.loads(result)# 把页面中提取到的字符串处理成字典
img_src_list = []
for item in desk_dict['list']:
ori = item.get("oriSize")
img_src = item.get("imgsrc")
img_src = img_src.replace("##SIZE##", ori)
img_src_list.append(img_src)
return img_src_list
def download_img(img_src):
"""
下载图片
:param img_src:xxxx
"""
name = img_src.split("/")[-1]
print(f"开始下载{name}")
resp = requests.get(img_src)
with open(f"new/{name}", mode="wb") as f:
f.write(resp.content)
print(f"{name}下载完毕!")
def main():
for i in range(1, 10):
url = "https://desk.zol.com.cn/pc/"
if i !=1 :
url = url + f"{i}.html"
print(url)
print("抓取到首页中每个详情页的href......")
hrefs = get_detail_href(url)
print("抓取到首页中每个详情页的href......搞定!")
print("访问每一个详情页. 得到每个详情页背后对应的一组图片的下载路径")
img_list = []# 装着所有的图片下载地址
for href in hrefs:
# 2. 访问每一个详情页. 得到每个详情页背后对应的一组图片的下载路径
img_src_list = get_img_srcs(href)
for img in img_src_list:
img_list.append(img)
print("访问每一个详情页. 得到每个详情页背后对应的一组图片的下载路径....搞定!!!")
# 3. 开始下载图片
with ThreadPoolExecutor(20) as t:
for img in img_list:# img: 图片下载路径
t.submit(download_img, img)
print("all over!!!")
if __name__ == '__main__':
main()
感谢分享,小女生很喜欢 感谢分享,学到了 谢谢很喜欢 哈哈哈点进来之前我还以为真的是获取桌面壁纸
感谢分享,学到了 66666,解我燃眉之急 女孩子们最喜欢这种卡通的啦 没想到第一次发学习贴这么多人看,我还以为我这种小白没人看嘞,谢谢大家! 哈哈哈,女朋友可喜欢了。感谢楼主
页:
[1]
2