煎蛋网官网(Python爬虫:煎蛋网全站妹子图)

煎蛋网官网。爬取流程从煎蛋网妹子图第一页开始抓取;爬取分页标签获得最后一页数字;根据最后一页页数,获得所有页URL;迭代所有页,对页面所有妹子图片url进行抓取;访问图片URL并且保存图片到文件夹。有需要Python学习资料的小伙伴吗?小编整理一套Python资料、PDF和源码,感兴趣者可以关注小编

煎蛋网官网(Python爬虫:煎蛋网全站妹子图)

煎蛋网官网。爬取流程

从煎蛋网妹子图第一页开始抓取;

爬取分页标签获得最后一页数字;

根据最后一页页数,获得所有页URL;

迭代所有页,对页面所有妹子图片url进行抓取;访问图片URL并且保存图片到文件夹。

有需要Python学习资料的小伙伴吗?小编整理一套Python资料、PDF和源码,感兴趣者可以关注小编后私信学习资料(是关注后私信哦)反正闲着也是闲着呢,不如学点东西啦

开始

一个网站虽然有很多页,但是大部分网站每一页的HTML标签内容都是相同的。我们只要获取到一页的内容,就可以获得所有页的内容了。那么开始之前,我们来分析一下煎蛋网妹子图页面的URL。

第一页的 url:http://jandan.net/ooxx/page-1

第二页:http://jandan.net/ooxx/page-2

最后一页:http://jandan.net/ooxx/page-93

不难发现,煎蛋网的 url 的规律是比较简单的,每一页后面 page 的数字就是几。那么我们可以通过一个循环就可以获得所有的页面 URL 了。但是大家应该想到,这个网站每天都会更新,今天是 93 页,明天就会增加到94页了。如果每一都要爬一次的话,那么每次都要改一下代码页数信息了。这样实现起来虽然可以,但是不免有些愚蠢。

所以我们需要通过页面的标签信息让程序自己获得页数,我们访问http://jandan.net/ooxx/这个页面时,就相当于我们直接访问了最后一页。大家可以自己试试看。

图中我们可以明确的看到最后一页的数字是94.只要通过这个页面的URL进行抓取就可以得到。我们先获得源码:

import requests

from bs4 import BeautifulSoup

url = ‘http://jandan.net/ooxx/’

headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36′}

resp = requests.get(url, headers=headers)

soup = BeautifulSoup(resp.text, ‘lxml’)

我们按下f12,从页面源码中找到最后一页 94 所在的标签:

原来 94 就在这个span标签啊。接下来是不是很简单了:

# 获得最高页码数

allpage = soup.find(‘span’, class_=”current-comment-page”).get_text()[1:-1]

由于标签内的 94 边包含一个[],大家不要以为只是一个list,只要[0]就可以获得的。我们完全可以使用type(),看一下他的属性,就知道它是一个字符串,我们利用切片去掉第一个和最后一个字符,就得到了页数了。

得到页数后,我们利用循环就可以得到所有页的url了:

urllist = []

# for循环迭代出所有页面,得到url

for page in range(1, int(allpage)+1):

allurl = base_url + ‘page-‘ + str(page)

urllist.append(allurl)

我们把它保存到一个list中。

那么现在,我们得到所有页面的 url,就可以来获取每一页的内容了。我们以最后一页为例来进行抓取。

我们仍然使用审查元素,找到图片 url 所在的标签。仍然是老方法,获取到页面所有包含图片的img标签:

# css选择器

allimgs = soup.select(‘div.text > p > img’)

只要一行代码,我们就成功获得所有标签了。这里使用了 CSS选择器,大家是否还记得这个方法呢。可以查看之前的文章或者BeautifulSoup的官方文档了解哦。如果大家对 CSS 不是很熟悉,或者根本不知道。也没关系,反正find_all()和find()方法也是可以实现的。不过这里我教大家一个简单的CSS选择器方法。

我们只要按f12打开浏览器的开发者工具,找到标签的位置,右击标签。就可以看到这个情况:

没错,我们直接Copy selector的内容,粘贴出来就是这样的字符串:#comment-3468457 > div > div > div.text > p > img

我们稍微去掉前面的一些标签,大多数情况下保留到父标签后面的内容就可以了。就是这样:div.text > p > img

我们放到代码中,运行一下就知道是不是成功了。

结果只一个列表:

[, , , , , , , , , , , ]

很显然,这一页的图片URL都在这里。

接下来就是提取img标签的src属性了。

for img in list:

urls = img[‘src’]

# 判断url是否完整

if urls[0:5] == ‘http:’:

img_url = urls

else:

img_url = ‘http:’ + urls

由于有的标签内url并不完整,所以这里我们进行一次判断。如果不完整就给他补全。

好了,图片的 url 都获得了,接下来就是保存图片了。大家还记得之前我们介绍Requests模块的时候,有过保存图片的演示。

因为万维网中每个图片,每个视频都有唯一的 url 指向它们。所以我们只要访问这个 url,并且获得图片的二进制数据,保存到本地就可以了。

imgs = requests.get(img_url,headers=headers)

filename = img_url.split(‘/’)[-1]

# 保存图片

with open(filename, ‘wb’) as f:

# 直接过滤掉保存失败的图片,不终止程序

try:

f.write(imgs.content)

print(‘Sucessful image:’,filename)

except:

print(‘Failed:’,filename)

大家注意,获取图片二进制数据是.content方法,而不是.text。这里我们有一个错误过滤,因为保存的过程中会有一些文件保存错误的情况,我们直接过滤掉,不终止程序的运行。

好了,爬虫程序到这里基本上已经全部实现了。但是我们如果把所有的图片存放在一个文件夹中,而且还是代码所在文件夹,不免有些难看。我们可以自己指定他们存放的位置。这里需要用的Python内置的os库了,不清楚的伙伴可以自己查看资料哈。

# 创建文件夹的函数,保存到D盘

def mkdir(path):

# os.path.exists(name)判断是否存在路径

# os.path.join(path, name)连接目录与文件名

isExists = os.path.exists(os.path.join(“D:\jiandan”, path))

# 如果不存在

if not isExists:

print(‘makedir’, path)

# 创建文件夹

os.makedirs(os.path.join(“D:\jiandan”, path))

# 切换到创建的文件夹

os.chdir(os.path.join(“D:\jiandan”, path))

return True

# 如果存在了就返回False

else:

print(path, ‘already exists’)

return False

我们只要传给这个函数一个路径参数就可以创建文件夹了。全部的功能都已经实现了,如果不出现以外的话,大家就可以在 d 盘看到这个文件夹了。

如果程序出现错误,可能是我们的程序访问过于频繁,网站封禁了我们的ip。这时,我们就要使用一个代理了。网上免费的代理很多,大家可以自己找,这里简单做一个使用代理的演示。由于是免费ip,不会存活太久就会不能使用,大家不要直接使用代码中的ip。后续可以带着大家一起代建一个自己的代理池。

proxies = {‘http’: ‘111.23.10.27:8080’}

try:

# Requests库的get请求

resp = requests.get(url, headers=headers)

except:

# 如果请求被阻,就使用代理

resp = requests.get(url, headers=headers, proxies=proxies)

有需要Python学习资料的小伙伴吗?小编整理一套Python资料、PDF和源码,感兴趣者可以关注小编后私信学习资料(是关注后私信哦)反正闲着也是闲着呢,不如学点东西啦

声明:该文观点仅代表作者本人,《家在公租房生活网》系信息发布平台,家在公租房生活网仅提供信息存储空间服务。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

相关推荐

  • 胆子大不怕事的星座男(胆子大什么都不怕)

    胆子大不怕事的星座男,在我们的日常生活中,应该都会遇到这样一个人,他很有勇气,不怕任何艰难险阻。一旦遇到想做的事情,果断去做,不要管会有什么后果。面对鬼屋,险恶之地,我不怕,也不怕事。那么这些勇敢的星座男都是些什么人呢?不怕事的勇敢星座男1.人马星座了解射手座的人都知道,他们属于那种性格非常直爽,

    2024年3月14日
    00
  • SSD固态硬盘坏块怎么办?还能用吗,固态硬盘出问题严重吗

    大家好,今天小编关注到一个比较有意思的话题,就是关于固态硬盘出问题严重吗的问题,于是小编就整理了4个相关介绍固态硬盘出问题严重吗的解答,让我们一起看看吧。1、固态硬盘会有坏道吗?2、SSD固态硬盘坏块怎么办?还能用吗?3、1t固态硬盘能用坏么?4、固态硬盘健康度低于多少不能用?固态硬盘会有坏道吗?固

    2024年2月12日
    00
  • 动辄汗流浃背什么意思(一课译词:汗流浃背)

    汗流浃背什么意思?Photo by Mary Taylor from Pexels“汗流浃背”,汉语成语,意思是汗水流得满背都是,多形容因恐惧或体力消耗流了很多汗,衣服都湿透了。可以翻译为“be streaming with sweat(from fear or physical exertion)

    2023年12月1日
    00
  • 羊肚菌的做法大全,羊肚菌怎么做好吃

    一、羊肚菌的做法大全,羊肚菌怎么做好吃主料土鸡500g羊肚菌20g铁棍山药100g辅料红枣适量盐适量步骤1.羊肚菌洗净用温水泡发半小时。2.整鸡切块备用。3.将鸡块焯去备水。4.另起锅烧开足量的水,加姜丝。5.将焯好水的鸡块加入汤锅中,放入几粒红枣,大火烧开。6

    2023年10月5日
    00
  • 怎么看显卡通电次数和时间

    大家好,今天小编关注到一个比较有意思的话题,就是关于显卡驱动的日期的问题,于是小编就整理了5个相关介绍显卡驱动的日期的解答,让我们一起看看吧。server2016如何查看显卡驱动怎么看显卡通电次数和时间如何修改显卡使用时间下载安装驱动精灵和显卡得多长时间,我这个已经快一小时了还在下载安装中,对吗?谢

    5小时前
    00
  • 这些星座很渣(很渣的星座排名)

    这些星座很渣,恋爱的时候,很少有人能遇到一个人,一路谈婚论嫁。很多时候,连和平分手都难得,不仅大吵大闹,甚至闹上法庭。十二星座中,有四个很不好,不管你们恋爱的时候多么形影不离,只要不爱了,就马上离开,很没心没肺。金牛座:冷漠并不能说明金牛座的性格本身。他们不爱说话,有什么情绪藏在心里不会轻易说出来

    百科 2023年11月24日
    00

发表回复

登录后才能评论
关注微信

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:296358331@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息