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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
Django框架 查询Extra功能实现解析
Sep 04 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
PyMongo 查询数据的实现
Jun 28 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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
python的unittest测试类代码实例
2017/12/07 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
建筑自我鉴定
2013/10/19 职场文书
理工科学生的自我评价
2013/12/15 职场文书
优秀员工表扬信
2014/01/17 职场文书
美术教学感言
2014/02/22 职场文书
环保小标语
2014/06/13 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
2015年环卫工作总结
2015/04/28 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript