爬虫项目之图文网站爬取图片
目录
前言
一、准备工作
二、网站信息
三、项目结构
四、代码实现步骤
1.引入库
2.实现抓取网站主页源码
3.实现抓取每一图集链接
4.生成图集列表供选择下载
5.通过所选内容进行下载
6.主函数整合
五、项目实现效果
总结
前言
网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
一、准备工作
- PyCharm 2021.3.1
- Python 3.8及以上
- 了解爬虫相关基础知识(xpath、request、lxml)
二、网站信息
该网站为完全免费的个人维护网站,希望大家练习时控制访问频率,以免造成网站损失。
三、项目结构
- 获取网站主页源代码
- 分析源码得到每一图集的链接并制成列表
- 循环访问列表中的链接得到源码
- 从源码中找到下载链接
四、代码实现步骤
1.引入库
import time
import os
import requests
import random
from lxml import etree
2.实现抓取网站主页源码
def get_content(url, headers, proxies):response = requests.get(url=url, proxies=proxies, headers=headers)content = response.texttime.sleep(random.random() * 3)return content
3.实现抓取每一图集链接
def get_pic_urls(content):tree = etree.HTML(content)pic_urls_list = tree.xpath('/html/body/div[3]/div/div[2]/div//div[@class="media media-3x2"]/a/@href')title_list = tree.xpath('/html/body/div[3]/div/div[2]/div//div[@class="media media-3x2"]/a/@title')return pic_urls_list, title_list
4.生成图集列表供选择下载
def Choosejj(title_list):number_list, n = [], 0print("这是本次爬取到的{}位小姐姐照片列表!".format(len(title_list)))while n < len(title_list):print(str(n+1) + '.' + title_list[n])n += 1print('请输入你要选择的小姐姐序号(输入回车结束输入):')while True:Q1 = input()if Q1 != '':if int(Q1) <= len(title_list) and int(Q1) not in number_list:number_list.append(int(Q1))elif int(Q1) > len(title_list) or int(Q1) <= 0:print('对不起,先生。没有{}号小姐姐哦!'.format(int(Q1)))elif int(Q1) in number_list:print('先生,你已经选过这位小姐姐了哦!')else:breakprint('先生,请稍等。这就为你下载!')return number_list
5.通过所选内容进行下载
def download_pics(pic_urls_list, title_list, number_list, headers, proxies):for number in number_list:number = number - 1pljj_pic_url = pic_urls_list[number]response = requests.get(url=pljj_pic_url, headers=headers, proxies=proxies)content = response.texttree = etree.HTML(content)img_urls = tree.xpath('/html/body/main/div/div[2]/div[1]/div/div/div[4]/div[3]/a/@href')time.sleep(random.random() * 3)print(img_urls)dir_name = title_list[number]if not os.path.exists(dir_name):os.mkdir(dir_name)print('为你创建《{}》图集'.format(dir_name))n = 1for img_url in img_urls:if img_url.split('.')[-1] == 'jpeg' or img_url.split('.')[-1] == 'jpg':print('正在下载第{}张照片'.format(n))n += 1file_name = img_url.split('/')[-1]response = requests.get(url=img_url, proxies=proxies, headers=headers, timeout=5)with open(dir_name + '/' + file_name, 'wb') as f:f.write(response.content)time.sleep(3)
6.主函数整合
def main():# 准备好请求头和代理池headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)'}proxies = {'http': '47.106.105.236:80'}# 首先获取网页源码,返回contenturl = 'https://www.vmgirls.com/'content = get_content(url, headers, proxies)# print(content)# 从源码中找出每个图集的链接,返回urlspic_urls_list, title_list = get_pic_urls(content)# print(pic_urls_list)# print(title_list)number_list = Choosejj(title_list)# 循环访问链接,下载图片download_pics(pic_urls_list, title_list, number_list, headers, proxies)print("下载完毕啦!")
五、项目实现效果
总结
本文中的爬虫实例为初级爬虫,需要练习者了解爬虫相关的基础知识,会使用xpath方式匹配源码内容,了解request、lxml库方法的使用,能够看懂网页源码定位所需内容位置。
爬虫项目之图文网站爬取图片相关推荐
- Java爬虫技术(一)普通网站爬取图片
爬虫简单介绍 用户和网站服务器的操作如下 而爬虫需要做的是模拟仿照用户机,去向服务器发送请求数据,并接受响应数据,接着去解析数据,获得我们想要的数据 步骤大致分为 准备好要爬取的网址 定义爬虫的参数 ...
- python爬虫实践(1)爬取图片网站的高清壁纸
python爬虫实践(1)爬取图片网站的高清壁纸 robots.txt协议: 爬取网站之前首先检查该站点根目录下是否存在robots.txt,如果存在,就会按照该文件中的内容来确定访问的范围:如果该文 ...
- 基于Spark的新闻推荐系统,包含爬虫项目、web网站以及spark推荐系统
下载地址:https://download.csdn.net/download/ouyangxiaobai123/22174377 项目介绍: 基于Spark的新闻推荐系统,包含爬虫项目.web网站以 ...
- 爬虫项目3 - 股票数据爬取
爬虫项目3 - 股票数据爬取 步骤 步骤 爬取股票名和股票列表,使用gucheng网进行爬取,网址: https://hq.gucheng.com/gpdmylb.html import reques ...
- Python爬虫学习(四)爬取图片素材网站素材
效果 目标网站 图片网站 目标接口: # GET 请求 https://www.logosc.cn/api/so/get?page=0&pageSize=20&keywords=&am ...
- scrapy爬取动态网页_动漫爱好者必会的Scrapy爬虫框架之———— 多页爬取图片的信息...
ok, 接下来我们要将怎样多页爬取图片的信息,以及如何下载图片. 知识点涉及到: 自动的翻页爬取 多个parse 之间的request 传递 构建图片爬取的通道 さあ!始めようぜ! 首先我们要爬取的网 ...
- python爬虫项目描述怎么写_爬虫项目咋写,爬取什么样的数据可以作为项目写在简历上?...
看样子,主要目的是上简历 如果你想要爬虫的offer,那么你的项目应该有这么几个特征: 能用常用的框架,必要时有能力修改框架甚至自己写一个 熟悉多线程多进程分布式等,对爬虫任务调度有很好的解决办法 采 ...
- 网络爬虫---从千图网爬取图片到本地
#图片爬虫,从千图网爬取图片到本地 import urllib.request import re import urllib.error for i in range(1,10): page ...
- python桌面爬虫_爬虫项目实战十三:爬取zol桌面壁纸
目标 爬取zol桌面壁纸,批量下载图片. 项目准备 软件:Pycharm 第三方库:requests,fake_useragent,re,lxml 网站地址:http://desk.zol.com.c ...
最新文章
- 国庆假期,推荐一款假日必备的看片神器!
- UIButton的重复点击
- 热插拔是什么?(Hot Swap hot-plugging hot plugging 带电插拔)USB热插拔
- javaone_JavaOne 2012:在JVM上诊断应用程序
- mysql网络异常_mysql运行过程中因网络或者数据库原因导致的异常
- Exchange2010应用地址列表
- 运用循环判断语句和列表的购物车程序
- JavaScript单线程运行机制与并发模型
- python节点之间的继承关系_python--继承关系
- 禁忌搜索算法求解TSP问题-python实现
- python关于pyaudio无法import的一系列问题
- 每周经典电路分析:采样保持放大器(1)
- linux上wps能云同步吗,WPS For Linux 6634 再次更新发布-文档也要上云
- MYSQL-中文检索匹配与正则表达式
- html5在线编辑器效果和源码
- 如何评价一个开源项目(一)--活跃度
- uni.showToast与uni.navigateTo同时使用问题
- matplotlib绘制折线图的柱状图
- 分布式链路追踪系统深入理解
- 诺奖以上,真相未满:追捕黑洞二百年
热门文章
- URL 相对路径和绝对路径
- 关于 SQL Error: 1146, SQLState: 42S02的解决方案
- https 请求是报错No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
- html鼠标事件有哪些,JavaScript事件类型:鼠标事件
- 数据库基本查询(函数)
- java循环语句实现自然数1~99的遍历求和
- 最近宽带升级成了200M速率,但是家里路由器不支持千兆宽带,该换什么样的?
- 高薪招聘能讲课的JAVA程序员,专、兼职均可
- openSUSE leap 42.3 添加HP Laserjet Pro M128fn打印机和驱动
- MongoDB深究之ObjectId