python应用:爬虫实例(动态网页)
以爬取搜狗图片为例,网页特点:采用“瀑布流”的方式加载图片,图片的真实地址存放在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应用:爬虫实例(动态网页)的更多相关文章
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取
区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...
- python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]
目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...
- Python 多进程爬虫实例
Python 多进程爬虫实例 import json import re import time from multiprocessing import Pool import requests f ...
- 爬虫---selenium动态网页数据抓取
动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...
- Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据
所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...
- python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]
前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...
- 在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫
爬虫抓取数据时有些数据是动态数据,例如是用js动态加载的,使用普通的urllib2 抓取数据是找不到相关数据的,这是爬虫初学者在使用的过程中,最容易发生的情况,明明在浏览器里有相应的信息,但是在pyt ...
- Python爬虫之-动态网页数据抓取
什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意 ...
- python应用:爬虫实例(静态网页)
爬取起点中文网某本小说实例: # -*-coding:utf8-*- import requests import urllib import urllib2 from bs4 import Beau ...
随机推荐
- Appium 如何模拟返回按键
from appium.webdriver import Remote driver.keyevent(4) python中点击返回键是这样写的 附录 keycode 电话键 KEYCODE_CALL ...
- gamemakerstudio:room_speed和image_speed
room_speed是游戏步数,每秒多少步(步事件)image_speed是动画帧率room_speed变则整个游戏变慢image_speed变只是该object动画变慢 除了游戏全局加速减速,一般不 ...
- solidity语言7
单位和全局变量 Ether Units: wei, finney, szabo, ether Time Units: 1 == 1 seconds 1 minutes == 60 seconds 1 ...
- 【Spring实战】—— 2 构造注入
本文讲解了构造注入以及spring的基本使用方式,通过一个杂技演员的例子,讲述了依赖注入属性或者对象的使用方法. 如果想要使用spring来实现依赖注入,需要几个重要的步骤: 1 定义主要的类和需要分 ...
- 百度地图JavaScript开发入门先知
最近项目紧急开发了一些百度地图的功能,觉得百度地图实数强大!于是今天不忙总结一下,看到不错的文章先转载. 文章出处:https://www.opengps.cn/Blog/View.aspx?id=1 ...
- ubuntu 可以加速播放的播放器SMPlayer 16.4安装
直接贴命令 sudo apt-add-repository ppa:rvm/smplayer sudo apt-get update sudo apt-get install smplayer smp ...
- 解决Could not get lock /var/cache/apt/archives/lock
在ubuntu apt-get upgrade的时候,遇到: E: Could not get lock /var/cache/ apt/archives/lock - open (11 Resour ...
- echarts固定柱子宽度(barWidth)
series: [ { name: '', yAxisIndex: 0, type: ' ...
- Softmax vs. Softmax-Loss: Numerical Stability
http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/ softmax 在 ...
- c++ 单引号和双引号
c++中单引号表示一个字符,双引号表示字符串 python中单引号与双引号是一样的