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 ...
随机推荐
- select * from pet where species regexp '^c';
select * from pet where species regexp '^c';
- VS中bin,app_code,app_data,app_browser,app_GlobalResources等文件夹的作用 .
1. Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需要引用的任何其他代码的可部署程序集.该目录中存在的任何.dll文件将自动地链接到应用程序.如果在该文件夹中留有不用的或过期的文 ...
- 框架页面jquery装载
- libxml的使用 编辑节点
libxml读取的基本功能已经介绍过了,现在将介绍libxml编写的基本功能. 编写操作包含节点的添加,删除和修改. 对于添加,我们需要调用xmlNewTextChild函数来添加节点,需要xmlNe ...
- PCI PCI-X PCI-E介绍
1.PCI 外设互联标准(或称个人电脑接口,Personal Computer Interface),实际应用中简称PCI(Peripheral Component Interconnect),是一种 ...
- 命令式编程 vs 声明式编程
实际上我们绝大多数程序员都是在用命令式风格在编程, 这是和我们的冯诺依曼计算机机构密切相关的. (码农翻身注: 参见文章<冯诺依曼计算机的诞生>) 在一个冯诺依曼计算机中, 最核心的就是C ...
- IOS开发之——IOS模拟器调试蓝牙BLE
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/24399887 因为在iPhone 4s ...
- 【BZOJ4573】[ZJOI2016] 大森林(LCT)
点此看题面 大致题意: 有\(n\)棵树,初始各有\(1\)个编号为\(1\)的节点,且其为生长节点.\(3\)种操作:将\([l,r]\)区间内的树增加一个新的编号的节点,修改\([l,r]\)区间 ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 【分块】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 ...
- JavaScript常见的内存泄漏原因
JavaScript 的垃圾收集机制 javascript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中的使用的内存.而在C和C++之类的语言中,开发人员的一项基本任务就是手动跟踪内 ...