什么是爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。(来源:百度百科)

爬虫协议

Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

robots.txt文件是一个文本文件,使用任何一个常见的文本编辑器,比如Windows系统自带的Notepad,就可以创建和编辑它。robots.txt是一个协议,而不是一个命令。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。(来源:百度百科)

爬虫百度图片

目标:爬取百度的图片,并保存电脑中能不能爬?

首先数据是否公开?能不能下载?

从图中可以看出,百度的图片是完全可以下载,说明了图片可以爬取先爬取一张图片

首先,明白图片是什么?有形式的事物,我们看到的,是图画、照片、拓片等的统称。图是技术制图中的基础术语,指用点、线、符号、文字和数字等描绘事物几何特征、形态、位置及大小的一种形式。随着数字采集技术和信号处理理论的发展,越来越多的图片以数字形式存储。

然后需要图片在哪里?图片是在云服务器的数据库中的保存起来的

每张图片都有对应的url,通过requests模块来发起请求,在用文件的wb+方式来保存起来import requests

r = requests.get('http://pic37.nipic.com/20140113/8800276_184927469000_2.png')

with open('demo.jpg','wb+') as f:

f.write(r.content)批量爬取但是有谁为了爬一张图片去写代码,还不如直接去下载 。爬虫是目的就是为了达到批量下载的目的,这才是真正的爬虫网站的分析

首先了解jsonJSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

json 就是js 的对象,就是来存取数据的东西JSON字符串{

“name”: “毛利”,

“age”: 18,

“ feature “ : [‘高’, ‘富’, ‘帅’]

}Python字典{

‘name’: ‘毛利’,

‘age’: 18

‘feature’ : [‘高’, ‘富’, ‘帅’]

}但是在python中不可以直接通过键值对来取得值,所以不得不谈谈python中的字典导入python 中json,通过json.loads(s) -->将json数据转换为python的数据(字典)ajax 的使用Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

图片是通过ajax 方法来加载的,也就是当我下拉,图片会自动加载,是因为网站自动发起了请求,分析图片url链接的位置同时找到对应ajax的请求的url构造ajax的url请求,来将json转化为字典,在通过字典的键值对来取值,得到图片对应的urlimport requests

import json

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}

r = requests.get('https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&word=%E5%9B%BE%E7%89%87&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=30&rn=30&gsm=1e&1561022599290=',headers = headers).text

res = json.loads(r)['data']

for index,i in enumerate(res):

url = i['hoverURL']

print(url)

with open( '{}.jpg'.format(index),'wb+') as f:

f.write(requests.get(url).content)构造json的url,不断的爬取图片在一个json 的有30张图片,所以发起一个json的请求,我们可以爬去30张图片,但是还是不够。

首先分析不同的json中发起的请求https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&word=%E5%9B%BE%E7%89%87&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=60&rn=30&gsm=3c&1561022599355=

https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&word=%E5%9B%BE%E7%89%87&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn=30&rn=30&gsm=1e&1561022599290=

其实可以发现,当再次发起请求时,关键就是那个 pn在不断的变动

最后封装代码,一个列表来定义生产者来存储不断的生成图片url,另一个列表来定义消费者来保存图片# -*- coding:utf-8 -*-

# time :2019/6/20 17:07

# author: 毛利

import requests

import json

import os

def get_pic_url(num):

pic_url= []

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}

for i in range(num):

page_url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&word=%E5%9B%BE%E7%89%87&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn={}&rn=30&gsm=1e&1561022599290='.format(30*i)

r = requests.get(page_url, headers=headers).text

res = json.loads(r)['data']

if res:

print(res)

for j in res:

try:

url = j['hoverURL']

pic_url.append(url)

except:

print('该图片的url不存在')

print(len(pic_url))

return pic_url

def down_img(num):

pic_url =get_pic_url(num)

if os.path.exists('D:\图片'):

pass

else:

os.makedirs('D:\图片')

path = 'D:\图片\\'

for index,i in enumerate(pic_url):

filename = path + str(index) + '.jpg'

print(filename)

with open(filename, 'wb+') as f:

f.write(requests.get(i).content)

if __name__ == '__main__':

num = int(input('爬取几次图片:一次30张'))

down_img(num)

爬取过程

爬取结果

文章首发于:

https://blog.csdn.net/weixin_44510615/article/details/93088867

python爬去百度图片_爬虫篇| 爬取百度图片(一)相关推荐

  1. python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  2. python爬虫爬取网页图片_Python爬虫实现抓取网页图片

    在逛贴吧的时候看见贴吧里面漂亮的图片,或有漂亮妹纸的图片,是不是想保存下来? 但是有的网页的图片比较多,一个个保存下来比较麻烦. 最近在学Python,所以用Python来抓取网页内容还是比较方便的: ...

  3. 清华尹成python爬虫百度云_爬虫:利用python完成百度贴吧数据采集

    前言:本文主要是分享下利用python爬取百度指定贴吧的全部帖子以及帖子回复内容,主要是利用python的request库获取网页信息,通过正则等方式解析我们需要的数据并存储到数据库中,并且后续可以用 ...

  4. python爬图片_Python爬虫:彼岸图网图片爬取-Go语言中文社区

    杂 哈哈,这是我第一篇博客 半年以后回来再看发现这代码简直太难看了 现在已经弃用大小驼峰转蛇形命名了 确实好看 除了命名别的也写的不怎么样 因为爬虫只是个爱好所以也不准备再投入时间重构了 将就着看吧 ...

  5. python批量下载静态页面_爬虫实战之,爬取壁纸,批量下载

    一.前言 在开始写爬虫之前,我们先了解一下爬虫 首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按 ...

  6. python爬取知乎live_Python爬虫 - 简单抓取百度指数

    前言有点忙,没空写东西,这是之前写的,加了些配图而已 这次要爬的网站是百度指数 正文 一.分析 打开网站(百度指数),呈现出来是这样的 如果搜索的话就需要登陆了,如果没有什么特别频繁的请求的话,直接登 ...

  7. python爬虫百度贴吧代码大全_零基础写python爬虫之抓取百度贴吧代码分享

    这里就不给大家废话了,直接上代码,代码的解释都在注释里面,看不懂的也别来问我,好好学学基础知识去! # -*- coding: utf-8 -*- #------------------------- ...

  8. python爬虫知乎图片_python爬虫(爬取知乎答案图片)

    python爬虫(爬取知乎答案图片) 1.⾸先,你要在电脑⾥安装 python 的环境 我会提供2.7和3.6两个版本的代码,但是本⽂只以python3.6版本为例. 安装完成后,打开你电脑的终端(T ...

  9. python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章

    下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...

最新文章

  1. MySql——安装与配置与启动和停止
  2. 商用机型和家用机型区别
  3. 11g Active DataGuard初探
  4. 用Scrutor来简化ASP.NET Core的DI注册
  5. MATLAB基础教程(9)——高级积分运算、二重积分
  6. 32 SD配置-合作伙伴确认-设置客户主数据的合作伙伴确定
  7. spring容器_Spring容器文档阅读要点记录
  8. 一个成功的BI项目实施需要注意哪些?
  9. 关于python列表去重复后按照元列表序列输出
  10. if else语句linux,linux 中的if else语句
  11. g4600黑苹果efi_Matebook 13/14 黑苹果 通用EFI分享amp;安装教程?
  12. 旋转的描述【1】——方向余弦矩阵
  13. 如何查看Safari浏览器network里Request的Payload
  14. win7的计算机最大连接数,win7系统解除共享文件夹最大连接数限制的操作方法
  15. 将汉字转换成汉语拼音的工具代码
  16. npm 删除已安装的依赖
  17. gmsl摄像头Android平台调试思路
  18. 创新型中小企业评价标准
  19. 美创科技与星环科技大数据平台完成兼容互认证!
  20. ChatGPT辅导孩子作业有技巧

热门文章

  1. Android 9.0及以上版本中,关于多进程问题对于WebView的影响
  2. Vue如何在考试中搞出高质量的成绩
  3. Kafka Rebalance机制
  4. 西安交通大学计算机考研专业介绍,西安交通大学考研专业介绍:计算机科学与技术...
  5. javascript入门之条件表达式,循环
  6. 数据结构与算法——课程设计报告(全国交通咨询模拟)
  7. 如何在Ubuntu中安装PHP
  8. BZOJ4386[POI2015]Wycieczki / Luogu3597[POI2015]WYC - 矩乘
  9. 在Qt编译好之后运行程序时提示:程序异常结束。The process was ended forcefully. ....exe crashed.
  10. 英特尔神经网络计算棒