以爬取搜狗图片为例,网页特点:采用“瀑布流”的方式加载图片,图片的真实地址存放在XHR中

 #-*-coding:utf8-*-
import requests
import urllib
import json
import math
import os class SG:
def __init__(self,pic_num):
self.num = pic_num
self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/61.0' #请求头属性(模拟浏览器访问)
self.headers = {'User-Agent' : self.user_agent} def get_img(self):
end = int(math.ceil(float(self.num)/48))
#print end
name = 1
#获取图片真实地址并保存到本地文件夹
for start in range (0,end):
url = 'http://pic.sogou.com/pics?query=%B1%DA%D6%BD&mode=1&dm=4&cwidth=1920&cheight=1080&start='+str(start)+'&reqType=ajax&reqFrom=result&tn=0'
imgs = requests.get(url,params=self.headers)
#print imgs
#搜狗图片真实地址存放在XHR中,访问发现是json文件,故解析json文件
jd = json.loads(imgs.text)
jd = jd['items'] #所有图片的信息都存在item数组中
imgs_url = []
for j in jd:
if "=" not in j['pic_url']: #图片真实地址则存放在item元素中pic_url中
imgs_url.append(j['pic_url'])
else:
print j['pic_url']
#print len(imgs_url) for img_url in imgs_url:
#新建文件夹
if not os.path.exists('picture'):
os.makedirs('picture')
print img_url #保存图片到本地文件夹
print('**********'+str(name)+'_1.jpg*********'+' Downloading')
#方法1
urllib.urlretrieve(img_url,'picture\\'+str(name)+'_1.jpg') print('**********'+str(name)+'_2.jpg*********'+' Downloading')
#方法2 'wb'以二进制方式写数据
with open('picture\\'+str(name)+'_2.jpg','wb') as f:
f.write(requests.get(img_url,params=self.headers,allow_redirects=False).content) name += 1 print('Download complete!') SG(100).get_img()

使用方法二时,如果使用参数allow_redirects=False,容易导致下载内容为空的情况;如果不使用该参数(默认是True),则容易导致页面重定向过多的错误。具体使用时,根据情况选择是否使用

python应用:爬虫实例(动态网页)的更多相关文章

  1. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  2. python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]

    目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...

  3. Python 多进程爬虫实例

    Python  多进程爬虫实例 import json import re import time from multiprocessing import Pool import requests f ...

  4. 爬虫---selenium动态网页数据抓取

    动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...

  5. Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

    所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...

  6. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...

  7. 在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫

    爬虫抓取数据时有些数据是动态数据,例如是用js动态加载的,使用普通的urllib2 抓取数据是找不到相关数据的,这是爬虫初学者在使用的过程中,最容易发生的情况,明明在浏览器里有相应的信息,但是在pyt ...

  8. Python爬虫之-动态网页数据抓取

    什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意 ...

  9. python应用:爬虫实例(静态网页)

    爬取起点中文网某本小说实例: # -*-coding:utf8-*- import requests import urllib import urllib2 from bs4 import Beau ...

随机推荐

  1. nginx下的nagios pnp4nagios

    #Spawn-FCGI 一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作 #fcgiwrap(Si ...

  2. 把web项目改造为maven项目

    如题,资料网上有一大堆,这里是实践了做个整理. [注意]maven配置 maven要运行在JDK:外部JAVA_HOME指定到JDK,eclipse中runtime指定到JDK 在eclipse中配置 ...

  3. 小故事学设计模式之Command : (一) 在永和豆浆店

    IT的事就是过场多,过场多了就容易忘,所以我们不妨看一个记一个,这也是一个办法,顺便跟同行们学习交流一下)前几天出去拍照,饿到腿软, 回城附近有一家永和豆浆店, 我们决定去那边解决午餐.豆浆店里面还不 ...

  4. 【BZOJ3495】PA2010 Riddle

    题目大意 有\(n\)个城镇被分成了\(k\)个郡,有\(m\)条连接城镇的无向边.要求给每个郡选择一个城镇作为首都,满足每条边至少有一个端点是首都. 题目分析 每条边至少有一个端点是首都,每个郡至多 ...

  5. HDU 3336 KMP

    题意:求每一个前缀,跟前缀相同的每个子串. 此题:网上很多都是假程序,不过也AC了,的确我测试几个案例之后的的确确是存在这个问题. 分析:每一个前缀,可以考虑KMP,f失配指针,如何求得它出现了多少次 ...

  6. POJ 1579 Function Run Fun 【记忆化搜索入门】

    题目传送门:http://poj.org/problem?id=1579 Function Run Fun Time Limit: 1000MS   Memory Limit: 10000K Tota ...

  7. AQS(一) 对CLH队列的增强

    基本概念 AQS(AbstractQueuedSynchronizer),顾名思义,是一个抽象的队列同步器. 它的队列是先进先出(FIFO)的等待队列 基于这个队列,AQS提供了一个实现阻塞锁的机制 ...

  8. Git免密码提交

    下面说一下https克隆的方式免密码提交 在我们下载链接前面加上账号:密码@即可 方式一: 使用https的方式克隆代码 git clone '地址' 查看项目中的配置文件 vim .git/conf ...

  9. 【luogu P3178 [HAOI2015]树上操作】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3178 模板题 菜 #include <cstdio> #include <cstring& ...

  10. MFC通过URL下载并保存文件代码 转载

    http://blog.csdn.net/charlessimonyi/article/details/8666108?utm_source=tuicool&utm_medium=referr ...