python根据用户需求输入想爬取的内容及页数爬取图片方法详解
作者:派大星.. 发布时间:2022-12-21 16:31:19
标签:python,爬取,图片
本次小编向大家介绍的是根据用户的需求输入想爬取的内容及页数。
主要步骤:
1.提示用户输入爬取的内容及页码。
2.根据用户输入,获取网址列表。
3.模拟浏览器向服务器发送请求,获取响应。
4.利用xpath方法找到图片的标签。
5.保存数据。
代码用面向过程的形式编写的。
关键字:requests库,xpath,面向过程
现在就来讲解代码书写的过程:
1.导入模块
import parsel # 该模块主要用来将请求后的字符串格式解析成re,xpath,css进行内容的匹配
import requests # 爬虫主要的包
from urllib.request import urlretrieve # 本文用来下载图片
import os # 标准库,本文用来新建文件夹
每个模块的作用都已经备注了。
2.提示用户输入内容和页数
if not os.path.exists("王一博图片"):
os.mkdir("王一博图片") # 判断有没有该文件夹,如果没有就创建改文件夹
k = input("请输入你想搜索的关键字:")
num = int(input("请输入你想搜索的页数:"))
3.准备好url和header
header = {"user-agent":
"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Mobile Safari/537.36"
}
base_url = "https://www.duitang.com/search/?kw=" + k + "&type=feed#!s-p"
title_url = []
n = 0
user-agent是服务器识别浏览器的重要参数,我们就用这个来蒙骗服务器,user-agent在浏览器里可以找到
那么现在我们就关注右边
这样header就找到了,注意要以字典的形式
4.发送请求、
for i in range(num):
title_url = base_url + str(i)
respons = requests.get(title_url, headers=header).text
html = parsel.Selector(respons) # 解析数据 -- parsel 转化为Selector对象,Selector对象具有xpath的方法,能够对转化的数据进行处理
pic_url = html.xpath('//div[@class="mbpho"]/a/img/@src').extract()
一切准备就绪后,就可以发送请求了。request.get.text返回的是网页的源代码,然后将源代码转换为Selector对象,再通过xpath的方法找到图片的网址。
xpath的方法可以参考:https://zhuanlan.zhihu.com/p/29436838
5.保存数据
获取图片的图片的链接后,我们就可以保存了。
for url in pic_url:
n = n + 1
file_path = "王一博图片" + '/' + str(n)+".jpg"
urlretrieve(url, file_path) # 下载图片,具体的用法可以去搜索下,很简单的
print("第%d张图片下载成功" % n)
注意:这里的for循环是在上面的循环里嵌套的。
最后来看看全部的代码吧!
import parsel # 该模块主要用来将请求后的字符串格式解析成re,xpath,css进行内容的匹配
import requests
from urllib.request import urlretrieve # 本文用来下载图片
import os # 标准库,本文用来新建文件夹
if not os.path.exists("王一博图片"):
os.mkdir("王一博图片") # 判断有没有该文件夹,如果没有就创建改文件夹
k = input("请输入你想搜索的关键字:")
num = int(input("请输入你想搜索的页数:"))
header = {"user-agent":
"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Mobile Safari/537.36"
}
base_url = "https://www.duitang.com/search/?kw=" + k + "&type=feed#!s-p"
title_url = []
n = 0
for i in range(num):
title_url = base_url + str(i)
respons = requests.get(title_url, headers=header).text
html = parsel.Selector(respons)
pic_url = html.xpath('//div[@class="mbpho"]/a/img/@src').extract()
# print(pic_url)
for url in pic_url:
n = n + 1
file_path = "王一博图片" + '/' + str(n)+".jpg"
urlretrieve(url, file_path) # 下载图片,具体的用法可以去搜索下,很简单的
print("第%d张图片下载成功" % n)
来看看运行的结果,以搜索王一博,搜索5页为例。
然后你就发信多了一个王一博的文件夹了,点开就可以看见王一博的帅照了。
来源:https://blog.csdn.net/qq_48657881/article/details/107746172


猜你喜欢
- 问题缘由:负责公司的开发平台研发工作,考虑的知识产权的保护工作,必须要考虑java的加密技术和js脚本的加密技术。在目前java加密很容易破
- 处理上传的文件: f1 = request.FILES['pic'] fname = '%s/%s' % (
- 实验目的:验证主动释放内存变量是否有价值. 实验原始代码: <script language=vbscript runat=serve
- python+selenium编写实现爬虫过程:1.爬虫循环处理table表,2.table表分页处理,3.网页table所有内容循环处理4
- 最近做了一个项目其中有项目需求涉及到访问控制,在访问需要登录才能使用的页面或功能时,会弹出登录框:效果如下: 图 1-点击用户名时,如未登录
- FTP服务器FTP服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是File Transfer Prot
- 利用tcpdump对mysql进行抓包操作如下所示:命令如下:tcpdump -s 0 -l -w - dst 192.168.244.10
- 第一种方法:采用git命令操作1、例如仓库中有下面的代码(版本1)2、现在继续编写代码,并且提交到远程仓库中(版本2)3、回退到版本1中gi
- bisect是python内置模块,用于有序序列的插入和查找。查找: bisect(array, item)插入: insort(array
- 前言最近因为线上alwayson环境的一个数据库上使用内存表。经过大概一个星期监控程序发现了一个非常严重问题这个数据库的日志文件不会截断,已
- 先前我们讲的都是“线性结构”,他的特征就是“一个节点最多有一个”前驱“和一个”后继“。那么我们今天讲的树会是怎样的呢?我们可以对”线性结构“
- 项目场景:在做目标检测时,重新进行标注会耗费大量的时间,如果能够批量对xml中的信息进行修改,那么将会节省大量的时间,接下来将详细介绍如何修
- 1. 实例描述在平时编程的过程中,会经常在网上翻译一些单词,本文使用Python制作一款翻译小工具,不仅可以自己用,还可以嵌入到程序当中。运
- 作用:用ASP程序将页面中的电话号码生成图片格式。 代码如下:<% Call Com_CreatValidCode
- 引言事情是这样的,直接开讲面试官:npm run xxx的时候,发生了什么?讲的越详细越好。我(心想,简单啊): 首先,DNS 解析,将域名
- 1.安装下载网址:http://phantomjs.org/download.html选择合适的版本。然后解压即可。环境变量的配置:进入解压
- 每天不同时间段通过微信发消息提醒女友简介有时候,你很想关心她,但是你太忙了,以至于她一直抱怨,觉得你不够关心她。你暗自下决心,下次一定要准时
- 1 概述一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式
- 目录Python3 面向对象一丶面向对象技术简介对象可以包含任意数量和类型的数据。2.Python面向对象的三大特性一、继承 二、
- 有一张错误上报表,下面只将与本文相关的字段罗列如下:上报人(ReportPerson)、上报错误ID(ErrorID)、上报时间(Repor