热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Python爬虫】尺度太大了!爬一个专门看小姐姐的网站,写一段紧张刺激的代码(附源码)

前言今天我们通过Python爬取小姐姐图片网站上的美图,零基础学会通用爬虫,当然我们还可以实现多线程爬虫,加快爬虫速度环境介绍python3.6pycharmrequests


前言

今天我们通过Python爬取小姐姐图片网站上的美图,零基础学会通用爬虫,当然我们还可以实现多线程爬虫,加快爬虫速度


环境介绍

  • python 3.6

  • pycharm

  • requests >>> pip install requests

  • re

  • time

  • concurrent.futures

 


【付费VIP完整版】只要看了就能学会的教程,80集Python基础入门视频教学

爬虫最基本思路

爬取单个相册内容:



  1. 找到目标 https://https://www.kanxiaojiejie.com/img/6509

  2. 发送请求 (人为操作: 访问网站)

  3. 获取数据 (HTML代码 就是服务器返回的数据)

  4. 数据提取 (筛选里面的内容)
    HTML网页代码

  5. 保存数据 (把图片下载下来)


目标网站


简单的通用爬虫代码

import requests
import parsel
import re
import os
page_html = requests.get('https://www.kanxiaojiejie.com/page/1').text
pages = parsel.Selector(page_html).css('.last::attr(href)').get().split('/')[-1]
for page in range(1, int(pages) + 1):
print(f'==================正在爬取第{page}页==================')
respOnse= requests.get(f'https://www.kanxiaojiejie.com/page/{page}')
data_html = response.text
# 提取详情页
zip_data = re.findall('(.*?)', data_html)
for url, title in zip_data:
print(f'----------------正在爬取{title}----------------')
if not os.path.exists('img/' + title):
os.mkdir('img/' + title)
resp = requests.get(url)
url_data = resp.text
selector = parsel.Selector(url_data)
img_list = selector.css('p>img::attr(src)').getall()
for img in img_list:
img_data = requests.get(img).content
img_name = img.split('/')[-1]
with open(f"img/{title}/{img_name}", mode='wb') as f:
f.write(img_data)
print(img_name, '爬取成功!!!')
print(title,'爬取成功!!!')

 


升级 多线程版本

把每一块都封装一个函数, 每个函数都有它特定的功能


先导入模块

import requests # 第三方模块 pip install requests
import re # 正则表达式模块 内置模块
import time
import concurrent.futures
import os
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/90.0.4430.212 Safari/537.36'
}
# 为什么这里要 requests.get() post() 请求会更安全...
respOnse= requests.get(url=html_url, headers=headers)
return response

 


保存数据

def save(title, img_url):
img_data = requests.get(img_url).content
img_name = img_url.split('/')[-1]
with open("img\\" + title + '\\' + img_name, mode='wb') as f:
f.write(img_data)

 


解析数据 获取图片url地址以及标题

def parse_1(data_html):
zip_data = re.findall('(.*?)', data_html, re.S)
return zip_data

 


解析数据 获取图片url地址以及标题

def parse_2(html_data):
selector = parsel.Selector(html_data)
img_list = selector.css('p>img::attr(src)').getall()
return img_list

 


创建文件夹

def mkdir_img(title):
if not os.path.exists('img\\' + title):
os.mkdir('img\\' + title)

 


主函数

def main(html_url):
html_data = requests.get(html_url).text
zip_data = parse_1(html_data)
for url, title in zip_data:
mkdir_img(title)
html_data_2 = get_response(url).text
img_list = parse_2(html_data_2)
for img in img_list:
save(title, img)
print(title, '爬取成功!!!')

 


程序的入口

if __name__ == '__main__':
time_1 = time.time()
exe = concurrent.futures.ThreadPoolExecutor(max_workers=10)
for page in range(1, 11):
url = f'https://www.kanxiaojiejie.com/page/{page}'
exe.submit(main, url)
exe.shutdown()
time_2 = time.time()
use_time = int(time_2) - int(time_1)
print(f'总计耗时:{use_time}秒')

 


总耗时:80秒


对于本篇文章有疑问,或者想要数据集的同学也加资料分享解答群:1039649593

推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
author-avatar
花长好月常圆人长久
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有