用python实现爬取奥特曼图片实例
作者:K5679527 发布时间:2022-09-23 00:25:18
爬取网址:http://www.ultramanclub.com/allultraman/
使用工具:pycharm,requests
进入网页
打开开发者工具
点击 Network
刷新网页,获取信息
其中的Request URL就是我们所爬取的网址
滑到最下有一个User-Agent,复制
向服务器发送请求
200意味着请求成功
使用 response.text 获取文本数据
可以看到有些乱码
使用encode转换
import requests
url = 'http://www.ultramanclub.com/allultraman/'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36'
}
response = requests.get(url = url,headers=headers)
html = response.text
Html=html.encode('iso-8859-1').decode('gbk')
print(Html)
接下来开始爬取需要的数据
使用Xpath获得网页链接
要使用Xpath必须先导入parsel包
import requests
import parsel
def get_response(html_url):
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36'
}
response = requests.get(url = html_url,headers=headers)
return response
url = 'http://www.ultramanclub.com/allultraman/'
response = get_response(url)
html=response.text.encode('iso-8859-1').decode('gbk')
selector = parsel.Selector(html)
period_hrefs = selector.xpath('//div[@class="btn"]/a/@href') #获取三个时代的网页链接
for period_href in period_hrefs:
print(period_href.get())
可以看到网页链接不完整,我们手动给它添加上去period_href = 'http://www.ultramanclub.com/allultraman/' + period_href.get()
进入其中一个网页
跟之前的操作一样,用Xpath获取奥特曼的网页信息
for period_href in period_hrefs:
period_href = 'http://www.ultramanclub.com/allultraman/' + period_href.get()
# print(period_href)
period_response = get_response(period_href).text
period_html = parsel.Selector(period_response)
lis = period_html.xpath('//div[@class="ultraheros-Contents_Generations"]/div/ul/li/a/@href')
for li in lis:
print(li.get())
运行后同样发现链接不完整
li = 'http://www.ultramanclub.com/allultraman/' + li.get().replace('./','')
拿到网址后继续套娃操作,就可以拿到图片数据
png_url = 'http://www.ultramanclub.com/allultraman/' + li_selector.xpath('//div[@class="left"]/figure/img/@src').get().replace('../','')
完整代码
import requests
import parsel
import os
dirname = "奥特曼"
if not os.path.exists(dirname): #判断是否存在名称为奥特曼的文件夹,没有就创建
os.mkdir(dirname)
def get_response(html_url):
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36'
}
response = requests.get(url = html_url,headers=headers)
return response
url = 'http://www.ultramanclub.com/allultraman/'
response = get_response(url)
html=response.text.encode('iso-8859-1').decode('gbk')
selector = parsel.Selector(html)
period_hrefs = selector.xpath('//div[@class="btn"]/a/@href') #获取三个时代的网页链接
for period_href in period_hrefs:
period_href = 'http://www.ultramanclub.com/allultraman/' + period_href.get()
period_html = get_response(period_href).text
period_selector = parsel.Selector(period_html)
lis = period_selector.xpath('//div[@class="ultraheros-Contents_Generations"]/div/ul/li/a/@href')
for li in lis:
li = 'http://www.ultramanclub.com/allultraman/' + li.get().replace('./','') #获取每个奥特曼的网址
# print(li)
li_html = get_response(li).text
li_selector = parsel.Selector(li_html)
url = li_selector.xpath('//div[@class="left"]/figure/img/@src').get()
# print(url)
if url:
png_url = 'http://www.ultramanclub.com/allultraman/' + url.replace('.', '')
png_title =li_selector.xpath('//ul[@class="lists"]/li[3]/text()').get()
png_title = png_title.encode('iso-8859-1').decode('gbk')
# print(li,png_title)
png_content = get_response(png_url).content
with open(f'{dirname}\\{png_title}.png','wb') as f:
f.write(png_content)
print(png_title,'图片下载完成')
else:
continue
当爬到 奈克斯特奥特曼的时候,就会返回None,调了半天,也没搞懂,所以用if url:语句跳过了奈克斯特奥特曼,有没有大佬知道原因
url = li_selector.xpath('//div[@class="left"]/figure/img/@src').get()
来源:https://blog.csdn.net/K4239527/article/details/122842708
猜你喜欢
- 欢欢喜喜辞旧岁 🐰🐰🐰辞旧迎新之际,来 AI Studio 一起 #欢喜迎兔年# !分享不同新年风俗,共享一段快乐时光!🐰🐰🐰p>下面
- 一、基本概念(查询语句)①基本语句1、“select * from 表名;”,—
- 生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料
- 当逐渐在用python开发项目或者日常使用时,一般需要大量使用别人提供的包,这些包能高效的帮助我们快速高效的完成指定任务或者需求,不过有时也
- 我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了!回到用P
- *父父组件(helloWorld.vue):<template> <div class="hello-world
- 文件名:Awa_temp.Class.asp 代码如下:<% 'Crazy蛙!模板操作类 '作者C
- 今天看到同事参与小米的抢购,几经数个星期的尝试,终于抢到了一台小米电视……看了一下小米的抢购流程,似乎可以用程序可破。于是想写点东西玩玩(你
- 在昨天的文章,《 block 和 inline 的区别是?》里,我给大家留了个问题——LI 元素到底是block level 的,还是 in
- 小贤是一条可爱的小狗(Dog), 它的叫声很好听(wow), 每次看到主人的时候就会乖乖叫一声(yelp).从这段描述可以得到以下对象:fu
- 互联网时代数据是 * 式增长,我们常常需要把结构化数据和非结构化数据(如文档,演示文稿,视频,音频,图像)存储在一起。通常有几种方案: 1。在
- 感谢LeXRus为我们带来他费心制作的教程,这是一个非常棒的动画教程,教程中不仅有 DW MX 2004 的操作方法,还有一些代码的写作和方
- 在go语言的源码中,会发现很多,代码只有函数签名,却看不到函数体,如:// src/os/proc.go 68行func runtime_b
- 一、下载MySQL http://www.mysql.org/downloads我下载的是mysql-noinstall-5.0.67-wi
- 使用pyttsx的python包,你可以将文本转换为语音。安装命令pip install pyttsx3 -i https://pypi.t
- golang1.16也在今天正式发布了。原定计划是2月1号年前发布的,不过迟到也是golang的老传统了,正好也趁着最后的假期快速预览一下g
- 01 创建不可见列创建不可见列:CREATE TABLE `t2` ( `id`&nbs
- 代码如下: <% Dim oConn, ors, aRows Dim i,j Set oConn=Server.CreateObjec
- 出错信息为: sys.servers 中找不到服务器 'BBB'。请验证指定的服务器名称是否正确。如果需要,请执行存储过程
- 开发目的这算是node应用的第二个小应用吧,主要目的是熟悉node和express框架。原理很简单:在node搭建的环境下引用第三方包处理图