python根据用户需求输入想爬取的内容及页数爬取图片方法详解


Posted in Python onAugust 03, 2020

本次小编向大家介绍的是根据用户的需求输入想爬取的内容及页数。

主要步骤:

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在浏览器里可以找到

python根据用户需求输入想爬取的内容及页数爬取图片方法详解

那么现在我们就关注右边

python根据用户需求输入想爬取的内容及页数爬取图片方法详解

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

python根据用户需求输入想爬取的内容及页数爬取图片方法详解

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

python根据用户需求输入想爬取的内容及页数爬取图片方法详解

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

python根据用户需求输入想爬取的内容及页数爬取图片方法详解

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

Python 相关文章推荐
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python每天必学之bytes字节
Jan 28 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
从django的中间件直接返回请求的方法
May 30 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
Python中捕获键盘的方式详解
Mar 28 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
python 如何设置守护进程
Oct 29 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
Python 如何调试程序崩溃错误
Aug 03 #Python
Python 捕获代码中所有异常的方法
Aug 03 #Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 #Python
Python pip使用超时问题解决方案
Aug 03 #Python
python时间序列数据转为timestamp格式的方法
Aug 03 #Python
python3 中使用urllib问题以及urllib详解
Aug 03 #Python
Python txt文件常用读写操作代码实例
Aug 03 #Python
You might like
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
几个php应用技巧
2008/03/27 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
法定代表人授权委托书范文
2014/08/02 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
2015教师节通讯稿
2015/07/20 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL