以爬取搜狗图片为例,网页特点:采用“瀑布流”的方式加载图片,图片的真实地址存放在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. wxpython 创建工具栏和菜单栏

    下面看一下关于创建工具栏,状态栏和菜单的方法,看下面一个例子: import wx class ToolBarFrame(wx.Frame): def __init__(self,parent,id) ...

  2. matlab练习程序(矩形变换为圆)

    最近对图像坐标的变换很感兴趣啊,这次是将一张图像变换为圆形. 变换原理就是按变换前后像素到圆心的距离按比例缩减就行了. 改变x,y方向上的系数,应该还可以变换为椭圆,不过我还没有尝试. 注意我这里相当 ...

  3. matlab练习程序(差异演化DE)

    这两天在看M.Tim Jones的<人工智能>,书中不只介绍原理,而且都有相应的c代码实现. 虽然代码不完全,不过缺少的部分完全可以自己补完. 差异演化和昨天实现的PSO很类似,都属于优化 ...

  4. windows下使用VNC进行远程连接

    在 windows 电脑上安装 VNC,包含 VNC server 和 VNC viewer,如果仅需要被操控或操控他人,选择型下载安装 VNC server 或 VNC viewer 即可. 在需要 ...

  5. jquery表单

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  6. March 3 2017 Week 9 Friday

    Each time you love, love as deeply as if it were forever. 如果爱,请深爱,就像能到地老天荒. If we can only encounter ...

  7. Git warning push.default is unset

    warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple ...

  8. 设计模式——工厂模式(Factory Method)

    工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪个类.工厂方法使一个类的实例化延迟到其子类. UML图: 运算基类: package com.cnblog.clarck; /** * 数据 ...

  9. 设计模式——装饰模式(Decorator Pattern)

    装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活. UML图: 模型类: Component类: package com.cnblog.clarck; /** ...

  10. Error: Error SSL Required Code: 403

    Error: Error SSL Required Code: 403 Error Message If the 'services' Web directory for ArcGIS is set ...