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在windows命令行下输出彩色文字的方法
Mar 19 Python
Python中文字符串截取问题
Jun 15 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Flask之flask-script模块使用
Jul 26 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
NumPy统计函数的实现方法
Jan 21 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
Python学习之异常中的finally使用详解
Mar 16 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中for循环语句的几种变型
2007/03/16 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
让焦点自动跳转
2006/07/01 Javascript
javascript编程起步(第七课)
2007/01/10 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
python之wxPython应用实例
2014/09/28 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
python语言基本语句用法总结
2019/06/11 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
新手学python应该下哪个版本
2020/06/11 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
英语自荐信常用语句
2013/12/13 职场文书
采购部部长岗位职责
2014/02/06 职场文书
个人整改方案范文
2014/10/25 职场文书
2014年少先队工作总结
2014/12/03 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
golang正则之命名分组方式
2021/04/25 Golang