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根据距离和时长计算配速示例
Feb 16 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
Python中文竖排显示的方法
Jul 28 Python
深入解析Python中的urllib2模块
Nov 13 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 Python
python使用正则来处理各种匹配问题
Dec 22 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
Python中免验证跳转到内容页的实例代码
Oct 23 Python
python字典的元素访问实例详解
Jul 21 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+php完美解决301重定向的两种方法
2011/06/08 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
微信支付开发发货通知实例
2016/07/12 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
标记环介质访问控制协议
2016/03/27 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
培训讲师邀请函
2014/01/10 职场文书
生产文员岗位职责
2014/04/05 职场文书
技能比武方案
2014/05/21 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
写给医院的感谢信
2015/01/22 职场文书
工作自我评价范文
2019/03/21 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android