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 RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
python创建进程fork用法
Jun 04 Python
理解python正则表达式
Jan 15 Python
Python+Wordpress制作小说站
Apr 14 Python
基于python 字符编码的理解
Sep 02 Python
用python实现的线程池实例代码
Jan 06 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
python 多线程串行和并行的实例
Feb 22 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
Python生成pdf目录书签的实例方法
Oct 29 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 SQLite类
2009/05/07 PHP
php时区转换转换函数
2014/01/07 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
python 切换root 执行命令的方法
2019/01/19 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
简单了解Python write writelines区别
2020/02/27 Python
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
2019年c语言经典面试题目
2016/08/17 面试题
管理科学大学生求职信
2013/11/13 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
学校万圣节活动方案
2014/02/13 职场文书
公开承诺书格式
2014/05/21 职场文书
公司租房协议书范本
2014/10/08 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
python运算符之与用户交互
2022/04/13 Python