爬取wall.alphacoders.com下的英雄联盟壁纸,爬虫完整过程

news/2024/11/7 23:58:57/

爬取League of Legends壁纸

详细思路与过程

网址:https://wall.alphacoders.com/search.php?search=League+of+Legends

在这里插入图片描述
把鼠标放置某一张图片上,就会出现该图片的link:
在这里插入图片描述
右键,查看网页源代码(没有这个选项的就换个浏览器):
并按ctrl+F,进行关键词检索,搜索你上一步看到的链接,比如我这里是i=536426
在这里插入图片描述
这是我们要的在这里插入图片描述
接着把关键词改为
在这里插入图片描述
刚好30个标签,回去数一个主页面正是有30张图。所以可以确认这是我们要的。但是这是一个相对路径:

<div class='boxgrid'><a href="big.php?i=536426"

点进去这个图片,查看完整链接:
在这里插入图片描述
https://wall.alphacoders.com/big.php?i=536426

那么显然在获取href之后再前面加上:
https://wall.alphacoders.com/
就是完整的链接。

接下来的操作非常类似:
把鼠标放置某一张图片上,就会出现该图片的link,
在这个图片界面右键,查看源代码,
根据你刚刚看到的关键词检索:
在这里插入图片描述

轻轻松松又找到了

在这里插入图片描述
直接复制这个链接:
https://images7.alphacoders.com/536/536426.png
换一个浏览器发现可以直接打开
在这里插入图片描述
并且我们返回最开始的界面,点击下一页

https://wall.alphacoders.com/search.php?search=league+of+legends&page=2
https://wall.alphacoders.com/search.php?search=league+of+legends&page=3
https://wall.alphacoders.com/search.php?search=league+of+legends&page=4
https://wall.alphacoders.com/search.php?search=league+of+legends&page=5
https://wall.alphacoders.com/search.php?search=league+of+legends&page=6

发现每一页的规律其实 是

https://wall.alphacoders.com/search.php?search=league+of+legends&page=页数

那么接下来就可以编写爬虫代码了:

  1. 打开https://wall.alphacoders.com/search.php?search=League+of+Legendss&page=1
  2. 爬取当前页面的图片link
  3. 点击下一页,即把网址的page+1,重复第二步,直到爬完所需页数
  4. 分别点击每一张图,获取真正的图片link,保存图片

代码如下:

#网址:https://wall.alphacoders.com/search.php?search=League+of+Legendsimport requests
import re #正则表达式
import os
from lxml import etree #python的html/xml解析器
from multiprocessing import Pool	#进程池headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ''AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/78.0.3904.97 Safari/537.36'
}#获取当前页面图片链接
def get_pic_link(url):res = requests.get(url,headers)selector = etree.HTML(res.text)href = selector.xpath('//div[@class="boxgrid"]/a/@href')#得到一个列表links = []for i in href:link = 'https://wall.alphacoders.com/'+str(i)res2 = requests.get(link,headers)selector2 = etree.HTML(res2.text)href2 = selector2.xpath('//div[@class="center img-container-desktop"]/a/@href')print(href2[0])links.append(href2[0])return links#将图片保存到本地
def save_pic(link):html = requests.get(link,headers)#获取图片标题title = link.split(r'/')[-1]with open(title,'wb') as f:f.write(html.content)if __name__ == '__main__':try:begin = 3end = 6urls = []urls.extend('https://wall.alphacoders.com/search.php?search=league+of+legends&page={}'.format(i) for i in range(begin,end))#这里设置页数for i in range(begin,end):#得到每个页面图片地址pool = Pool(processes=8)pool.map(save_pic,get_pic_link(urls[i-begin]))print('已保存第',+i,'页')		except:print('error')

就会得到:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
爱了爱了


http://www.ppmy.cn/news/297163.html

相关文章

ubuntu桌面配置 | dota类游戏

ubuntu打扮起来&#xff0c;那可是相当的炫&#xff0c; 快捷键&#xff1a; alt鼠标左键 拖动窗口 超级键鼠标中间滚动键 放大貌似真3D shift ctrl alt 方向键 平滑将窗口从一个桌面移到另一个桌面 超级键 tab ctrl 超级键 水纹显示 ctrl alt 下 平面显示…

打dotaⅡ

在DOTA2中&#xff0c;乞求者卡尔可以召唤三种元素&#xff0c;冰(Quas)&#xff0c;雷(Wex)&#xff0c;火(Exort)&#xff0c;当你按下Q时&#xff0c;他会召唤一个冰元素&#xff0c;按下W召唤雷元素&#xff0c;按下E召唤火元素。所有元素总数量最大为3&#xff0c;这意味着…

dota英雄全称

注意&#xff1a;英雄名称排序依次为 本名-英雄名-简称-中文名 Sentinel Taverns 近卫 A&#xff1a;Morning Tavern 清晨酒馆 ShendelzareSilkwood-TheVengefulSpirit-VS-复仇之魂 Zeus-LordofOlympia-Zeus&Mk-众神之王 Aiushtha-TheEnchantress-Ench&EH-魅惑魔女 Mor…

Dota全图那些事儿

Dota全图那些事儿 很早就着手研究全图了&#xff0c;也准备很多相关知识。由于自己编程基础比较差&#xff0c;恶补了不少知识&#xff0c;主要是硬生生的啃了大半本的《windows核心编程》。看这本书的过程中&#xff0c;有很多不懂得&#xff0c;但我适当跳过了&#xff08;其…

自己给dota开图

dota玩了很多很多年&#xff0c;其中知道有些玩家很假&#xff0c;但是心想开图毕竟是少数&#xff0c;直到自己开了一次图才发现&#xff0c;开图真不是少数&#xff0c;原因就是外挂程序太简单了&#xff0c;并不想深入&#xff0c;所以很多结构性代码我直接写死了&#xff0…

dota 1920*1080

运行regedit.exe local user > software> Blizzard Entertainment> warcraft III> video> 把refresh hight改成1080 (十进制) reftreh width改成1920 (十进制) 让war3支持高宽频分辨率的方法

NodeLocal DNS介绍及部署应用

目录 一、NodeLocal DNS是什么&#xff1f; 二、为什么使用NodeLocal DNS&#xff1f; 三、工作原理 四、安装NodeLocal DNS 五、在应用中使用NodeLocal DNSCache 六、验证 一、NodeLocal DNS是什么&#xff1f; NodeLocal DNSCache 通过在集群节点上运行一个 DaemonSet …