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利用beautifulSoup实现爬虫
Sep 29 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
python实现对csv文件的列的内容读取
Jul 04 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
Python中作用域的深入讲解
Dec 10 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
python 动态调用函数实例解析
Oct 21 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
基于Python获取城市近7天天气预报
Nov 26 Python
Python中join()函数多种操作代码实例
Jan 13 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学习之PHP表达式
2006/10/09 PHP
MYSQL数据库初学者使用指南
2006/11/16 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
php购物车实现方法
2015/01/03 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
php使用正则验证中文
2016/04/06 PHP
php mysql 封装类实例代码
2016/09/18 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
用jscript启动sqlserver
2007/06/21 Javascript
Javascript 日期处理之时区问题
2009/10/08 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
Python内置数据类型详解
2014/08/18 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
Joules美国官网:出色的英国风格
2017/10/30 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
本科毕业生自荐信
2014/06/02 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
2014年财务科工作总结
2014/11/11 职场文书
毕业生对母校寄语
2015/02/26 职场文书
十八大观后感
2015/06/12 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
JavaScript ES6的函数拓展
2022/01/18 Javascript