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 greenlet实现原理和使用示例
Sep 24 Python
sublime text 3配置使用python操作方法
Jun 11 Python
python 处理string到hex脚本的方法
Oct 26 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
python numpy实现文件存取的示例代码
May 26 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
什么是python的必选参数
Jun 21 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
Python环境搭建过程从安装到Hello World
Feb 05 Python
python 镜像环境搭建总结
Sep 23 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
通过具体程序来理解PHP里面的抽象类
2010/01/28 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
JQuery切换显示的效果实例代码
2013/02/27 Javascript
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
python中bisect模块用法实例
2014/09/25 Python
Python3.8中使用f-strings调试
2019/05/22 Python
Django Celery异步任务队列的实现
2019/07/24 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
教师找工作推荐信
2013/11/23 职场文书
外国人聘用意向书
2014/04/01 职场文书
委托公证书
2014/04/08 职场文书
运动会的口号
2014/06/09 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
个人向公司借款协议书
2014/10/09 职场文书
与死神共舞观后感
2015/06/15 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python