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实现baidu hi自动登录的代码
Feb 10 Python
在Python的Django框架中编写编译函数
Jul 20 Python
详解python3百度指数抓取实例
Dec 12 Python
Python smtplib实现发送邮件功能
May 22 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
python创建文件备份的脚本
Sep 11 Python
Python中反射和描述器总结
Sep 23 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
基于Python正确读取资源文件
Sep 14 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
基于Python编写一个监控CPU的应用系统
Jun 25 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
Apache设置虚拟WEB
2006/10/09 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
js截取函数(indexOf,join等)
2010/09/01 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
python中global用法实例分析
2015/04/30 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
如何学习Python time模块
2020/06/03 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
农民入党思想汇报
2014/01/03 职场文书
怎么写自荐书范文
2014/02/12 职场文书
人民教师求职自荐信
2014/03/12 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
华山导游词
2015/02/03 职场文书
西柏坡观后感
2015/06/08 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
会计专业自荐信范文
2019/05/22 职场文书
Nginx的基本概念和原理
2022/03/21 Servers
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python