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计算字符宽度的方法
Jun 14 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
Python之web模板应用
Dec 26 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
python生成n个元素的全组合方法
Nov 13 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
Python 离线工作环境搭建的方法步骤
Jul 29 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
python关于调用函数外的变量实例
Dec 26 Python
Python读取YAML文件过程详解
Dec 30 Python
零基础学Python之前需要学c语言吗
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
php设计模式 Composite (组合模式)
2011/06/26 PHP
如何在php中正确的使用json
2013/08/06 PHP
php链表用法实例分析
2015/07/09 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
Python输入二维数组方法
2018/04/13 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
python各层级目录下import方法代码实例
2020/01/20 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
毕业学生推荐信
2013/12/01 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
青蓝工程实施方案
2014/03/27 职场文书
寒假家长评语大全
2014/04/16 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
利用Python实现模拟登录知乎
2022/05/25 Python