爬虫实战——批量爬取明星图片(http://www.win4000.com/)

article/2025/9/18 17:20:01

爬取网站

美桌(http://www.win4000.com)

由于该网站并没有robots协议,因此可以任意爬取。

技术路线

requests+re

除此之外用到了pypinyin库用于进行名字到拼音的转换

代码

# -*- coding: utf-8 -*-
"""
Created on Mon Oct 16 20:32:27 2017
@author: 望
"""
import requests
import re
import os
from pypinyin import pinyin, lazy_pinyin
def getHTMLText(url):try:r = requests.get(url,timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:print("")def getPageUrls(text,name):re_pageUrl=r'href="(.+)">\s*<img src="(.+)" alt="'+namereturn re.findall(re_pageUrl,text)def downPictures(text,root,name):pageUrls=getPageUrls(text,name)  titles=re.findall(r'alt="'+name+r'(.+)" ',text)for i in range(len(pageUrls)):pageUrl=pageUrls[i][0]path = root + titles[i]+ "//"if not os.path.exists(path):os.mkdir(path)if not os.listdir(path):             pageText=getHTMLText(pageUrl)totalPics=int(re.findall(r'<em>(.+)</em>)',pageText)[0])downUrl=re.findall(r'href="(.+?)" class="">下载图片',pageText)[0]cnt=1;while(cnt<=totalPics):picPath=path+str(cnt)+".jpg"r=requests.get(downUrl)with open(picPath,'wb') as f:f.write(r.content)f.close()print('{} - 第{}张下载已完成\n'.format(titles[i],cnt))cnt+=1                        nextPageUrl=re.findall(r'href="(.+?)">下一张',pageText)[0]pageText=getHTMLText(nextPageUrl)downUrl=re.findall(r'href="(.+?)" class="">下载图片',pageText)[0]returndef main():  name=input("请输入你喜欢的明星的名字:")nameUrl="http://www.win4000.com/mt/"+''.join(lazy_pinyin(name))+".html"        try:text=getHTMLText(nameUrl)if not re.findall(r'暂无(.+)!',text):       root = "D://pics//"+name+"//"if not os.path.exists(root):os.mkdir(root)downPictures(text,root,name)try:nextPage=re.findall(r'next" href="(.+)"',text)[0]while(nextPage):nextText=getHTMLText(nextPage)downPictures(nextText,root,name)              nextPage=re.findall(r'next" href="(.+)"',nextText)[0]except IndexError:print("已全部下载完毕")except TypeError:print("不好意思,没有{}的照片".format(name))returnif __name__ == '__main__':main()

 


http://chatgpt.dhexx.cn/article/2lhtaBv6.shtml

相关文章

Cleartext HTTP traffic to pic1.win4000.com not permitted

首先理解清楚字面意思: 不允许明文HTTP访问方式 理解字面意思之后&#xff0c;我们可以打开google官网&#xff0c;找到Android的http安全配置说明文档 大概意思是说&#xff0c;所有连接都应该使用安全连接&#xff08; TLS 和 HTTPS 加密协议&#xff09;默认均信任预装的…

给大家分享几个不错的高清壁纸网

正文: 很多朋友都在找壁纸&#xff0c;但是又不知道去哪里找&#xff0c;所有今天我给大家分享几个不错的壁纸站&#xff0c;当然不仅限于下面的这些壁纸站&#xff0c;其实壁纸站有非常得多&#xff0c;我只是随便给大家整理了几个。 1.极简壁纸: 网站地址&#xff1a;bz.z…

配置交叉编译工具链和环境变量

配置交叉编译工具链和环境变量 1 设置交叉编译工具链1.1 永久生效1.2 临时生效1.3 手动指定 2 测试交叉编译工具链2.1 测试环境变量2.2 测试交叉编译器 3 如何添加交叉编译工具链&#xff08;toolchain&#xff09;到环境变量&#xff1f;&#xff08;--sysroot路径&#xff09…

配置交叉编译工具链

文章目录 1 配置交叉编译工具链1.1 永久生效1.2 临时生效1.3 手动指定 2 测试交叉编译工具链 简单记录一下配置交叉编译工具链的过程。 1 配置交叉编译工具链 交叉编译工具链存放于/home/book 目录下。设置交叉编译工具主要是设置 PATH&#xff0c; ARCH 和 CROSS_COMPILE 三个…

ARM学习(19)交叉编译工具链的理解

笔者来聊聊交叉编译工具链 1、认识 正常理解的&#xff0c;比如windows下编译出来windows上面运行&#xff0c;visual stdio&#xff0c;等&#xff0c;这是因为windows有能力编译出来&#xff0c;有对应的VC工具链&#xff0c;这是本地编译。 假如一个51板子或者stm32板子&a…

交叉编译工具链配置

第一步&#xff0c; 将文件放在Linux根目录下&#xff08;目录可以自己选择&#xff0c;记住即可&#xff09;&#xff0c;通过下面命令解压&#xff1a; unzip aarch64-poky-linux-7.3-glibc-2.27.zip第二步&#xff1a; cd aarch64-poky-linux-7.3-glibc-2.27目录下&#…

构建gcc交叉编译工具链

如何构建一个GCC交叉编译工具链 GCC不仅是一个编译器&#xff0c;它是一个开源工程&#xff0c;可以让你建立各种编译器。一些编译器支持多线程&#xff0c;一些支持共享库&#xff0c;一些支持Multilib&#xff08;典型的应用是在64位机上运行32位应用程序&#xff09;&#…

ARM交叉编译工具链分类说明

为什么要用交叉编译器&#xff1f; 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序&#xff0c;比如在PC平台&#xff08;X86 CPU&#xff09;上编译出能运行在以ARM为内核的CPU平台上的程序&#xff0c;编译得到的程序在X86 CPU平台上是不…

ARM-Linux 交叉编译工具链安装

创建时间&#xff1a;2022-04-12-23:10 说明&#xff1a;在Linux下安装arm-linux交叉编译工具链 修改时间&#xff1a; 修改内容&#xff1a; 1. 前言 在ubuntu中系统自带的gcc编译器是基于x86架构的&#xff0c;通过该编译器编译出来的代码只能在x86架构上运行。 如果需要在x…

【linux】安装Linux的交叉编译工具链

1、linux中装软件的特点 linux中安装软件比windows中复杂。linux中安装软件一般有以下几种方法&#xff1a; 第一种&#xff1a;在线安装。譬如ubuntu中使用apt-get install vim来安装vim软件。 第二种&#xff1a;自己下载安装包来安装。这种方式的缺陷就是你不知道你…

制作交叉编译工具链

制作交叉编译工具链 编写可以在ARM上运行的程序需要使用arm-linux-gcc交叉编译工具。因此&#xff0c;需要制作一套交叉编译器工具链&#xff0c;使用它&#xff0c;可以让代码运行在ARM平台上。 制作arm-linux交叉编译工具链一般通过crosstool工具或者crosstool-NG&#xff…

【交叉编译】配置交叉编译工具链

配置交叉编译工具链 一、 设置交叉编译工具链1.永久生效2.临时生效3.手动指定 二、测试交叉编译工具链1.测试环境变量&#xff1a;2.测试交叉编译器&#xff1a; 一、 设置交叉编译工具链 交叉编译工具链用来在Ubuntu主机上编译应用程序&#xff0c;而这些应用程序是在ARM等其…

【编译原理】交叉工具链详解

1、嵌入式开发模型-交叉开发 在嵌入式开发过程中有宿主机和目标机的角色之分&#xff0c;宿主机是执行编译、链接嵌入式软件的计算机&#xff0c;目标机是运行嵌入式软件的硬件平台。在宿主机执行编译的流程如下&#xff1a; 而所谓的交叉编译就是&#xff1a;在一种平台上编…

linux交叉编译工具链安装

交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码&#xff0c;相当于两种架构“交叉”起来了。   交叉编译器有很多种&#xff0c;我们使用 Linaro 出品的交叉编译器&#xff0c;Linaro 一间非营利性质的开放源代码软件工程公司&#xff0c;Linaro 开发了很…

常用的交叉编译工具链

交叉编译工具链是一种用于在一个平台上编译另一个平台上运行的程序的软件工具集&#xff0c;它通常包括编译器、链接器、汇编器等组件。 交叉编译工具链的命名一般遵循 target-platform-triplet 的格式&#xff0c;例如 arm-linux-gcc 表示用于生成 ARM 平台上 Linux 系统下运…

基于cmake的交叉编译工具链

基于cmake的交叉编译工具链 本文转载自&#xff1a;https://segmentfault.com/a/1190000019276315&#xff0c;本站转载出于传递更多信息之目的&#xff0c;版权归原作者或者来源机构所有。 一、基本概念 1. 什么是交叉编译 交叉编译是A机器上编译生成&#xff0c;运行在B机…

交叉编译工具链建立与常识

交叉编译工具链的命名规则 arch [-vendor] [-os] [-(gnu)eabi] arch – 体系架构&#xff0c;如ARM&#xff0c;MIPS&#xff0c;对于MIPS可能还分大端模式mips或者小端模式mipsel&#xff1b; vendor – 工具链提供商&#xff0c;可能有的工具链会省去这个字段&#xff0c;…

交叉编译工具链的安装和配置过程

1. 编译工具链基本介绍 C/C程序需要编译成二进制的机器码才能被CPU识别运行&#xff0c;而编译程序就需要用到编译器&#xff0c;比如我们常用的gcc编译器。 gcc编译器&#xff0c;其实只是编译工具链的其中一个工具而已&#xff0c;实际上整个编译工具链包含了&#xff1a;g…

编译工具链和交叉编译工具链简易说明

文章目录 编译工具链交叉编译工具链 编译工具链 做C/C开发特别是嵌入式方向的肯定会涉及编译工具链和交叉编译工具链相关内容。 C/C的程序需要经过 gcc 等编译成二进制程序才能被计算机使用&#xff0c;这里的 gcc 通常是泛指&#xff0c;包括 gcc 、 g 、ar 、as 、ld 等一系…

Linux vim分屏,如何切换窗口

1.使用 :vsp 2.若想切换窗口&#xff0c;从左边切换到右边&#xff0c;crtlw 点击两次