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 开发Activex组件方法
Nov 08 Python
如何在Python中编写并发程序
Feb 27 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
详解python中的hashlib模块的使用
Apr 22 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Python3如何在服务器打印资产信息
Aug 27 Python
用Python制作灯光秀短视频的思路详解
Apr 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中对缓冲区的控制实现代码
2013/09/29 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
小程序实现分类页
2019/07/12 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
在Python中调用ggplot的三种方法
2015/04/08 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
linux 下selenium chrome使用详解
2020/04/02 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
建筑投标担保书
2014/05/20 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
董事长岗位职责
2015/02/13 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
JavaScript组合继承详解
2021/11/07 Javascript
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS