python输入数据爬取_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在浏览器里可以找到

2020080317091742.png

那么现在我们就关注右边

2020080317091743.png

这样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的方法找到图片的网址。

2020080317091744.png

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页为例。

2020080317091745.png

然后你就发信多了一个王一博的文件夹了,点开就可以看见王一博的帅照了。

2020080317091746.png

到此这篇关于python根据用户需求输入想爬取的内容及页数爬取图片方法详解的文章就介绍到这了,更多相关python爬取图片方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word List 50

word List 50 如果存在什么问题,欢迎批评指正!谢谢!

单点突破,击穿阈值,DevOps转型你需要这样做

在上篇文章里,我提到了如何通过对价值流进行分析、拆解关键要素指标,并通过缩减处理时间PT、降低前置时间LT、提高完成&准确的百分比(C&A%),实现企业研发效能10倍速提升。大家点击回看这篇文章《以埃隆马斯克“…

双向dcdc变换器simulink仿真_二极管箝位五电平变换器Simulin仿真

● 本期为二极管箝位五电平变换器的基本Simulink仿真,只包含其SPWM调制。感谢公众号一位好友“一叶知秋”提供Simulink模型并分享。01二极管箝位五电平变换器调制方法传统的变换器存在高的电压变化率和共模电压,且波形谐波含量较大,使得输出滤…

在.NET Core中使用MachineKey

在.NET Core中使用MachineKey在上篇文章中,我介绍了 Cookie是基于 MachineKey生成的, MachineKey决定了 Cookie生成的算法和密钥,并如果使用多台服务器做负载均衡时,必须指定一致的 MachineKey。但在 .NETCore中,官方似…

cg word List 1

cg word List 1 如果存在什么问题,欢迎批评指正!谢谢!

[蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)

题目描述 如下图, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连) 比如,下面两张图中,粉红色所示部分就是合格的剪取。 请你计算,一共有多少种不同…

cg word List2

cg word List 2 如果存在什么问题,欢迎批评指正!谢谢!

如何扩展分布式日志组件(Exceptionless)的日志通知?

作者:justmine头条号:大数据与云原生微信公众号:大数据与云原生创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。为了方便阅读,微信公众号已按分类排版,后续的文章…

hadoop hive集群_基于伪分布式Hadoop搭建Hive平台详细教程

一、搭建环境的前提条件环境:Linux系统Hadoop-2.6.0MySQL 5.6apache-hive-2.3.7这里的环境不一定需要和我一样,基本版本差不多都ok的,所需安装包和压缩包自行下载即可。但是注意hive和hadoop都是2.x系列版本的。这里提供一个我下载的hive版本…

cg word List 3

cg word List 3 如果存在什么问题,欢迎批评指正!谢谢!

.NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(上)

07 | 用Autofac增强容器能力:引入面向切面编程(AOP)的能力这一节讲解使用第三方框架来扩展依赖注入容器什么情况下需要我们引入第三方容器组件?大部分情况下,默认的容器组件足够使用当需要一些非常特殊的场景如下&…

sql 对groupby 后的数据limit_SQL(三)——汇总分析

1. 汇总分析函数的3个功能:①功能;②输入(参数);③输出(返回值)查询课程编号为“0002”的总成绩:查询选了课程的学生人数:2.分组sql分组:group bygroup by 实现数据分组&…

cg word List4

cg word List4 如果存在什么问题,欢迎批评指正!谢谢!

通过 Serverless 加速 Blazor WebAssembly

Blazor ❤ Serverless我正在开发 Ant Design 的 Blazor 版本,预览页面部署在 Github Pages 上,但是加载速度很不理想,往往需要 1 分钟多钟才完成。项目地址:https://github.com/ElderJames/ant-design-blazor[1] 求 Star。当寻求解…

eclipse中tomcat启动不了_Eclipse怎样与Tomcat集成

1 打开eclipse2 打开Window -> Show View -> Servers3 点击No servers are available.Click this link to create a new server...4 选择 Apache -> Tomcat v9.0 Server,tomcat的版本可以根据本机安装的tomcat版本选择,然后点击Next5 Name不需要…

树的存储结构-双亲表示法

特点:找双亲容易&#xff0c;找孩子难 代码如下&#xff1a; #include <iostream> using namespace std; typedef char ElemType; #define MAX_Tree_size 100 typedef struct PTNode {ElemType data;int parent;//双亲位置域 }PTNode;typedef struct {PTNode nodes[MA…

cg word List5

## cg word List5 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

x509trustmanager怎么验证证书_GeoTrust通配符证书和多域名SSL证书对比评测

GeoTrust SSL证书类型很丰富&#xff0c;能够满足多样的需求&#xff0c;而GeoTrust通配符证书和多域名SSL证书都是支持多个域名的SSL证书&#xff0c;这时候就有网友问了&#xff0c;GeoTrust通配符证书和多域名SSL证书选择哪个好呢&#xff1f;接下来安信证书就为大家做个详细…

树的存储结构-孩子链表

特点:找孩子容易&#xff0c;找双亲难 代码如下&#xff1a; #include <iostream> using namespace std; typedef char ElemType; #define MAX_tree_size //孩子结构 typedef struct CTNode {int child;struct CTNode *next; }*ChildPtr; //双亲结点结构 typedef stru…

【视频教程】使用 ASP.NET Core 3.x 构建 RESTful Web API 已完结

使用 ASP.NET Core 3.x 构建 RESTful Web API 的视频教程已经完结&#xff0c;共50讲&#xff0c;约10.5小时。B站可看&#xff0c;点击原文链接。度娘盘可下载完整视频&#xff1a;https://pan.baidu.com/s/1VPE3bkAVQI_RO3tDrxod4w提取码: hsmj源码以及PPT&#xff1a;https:…