python抓取动态网页(Python爬取网页图片的相关知识和一些Code实例(组图))
优采云 发布时间: 2022-03-03 03:17python抓取动态网页(Python爬取网页图片的相关知识和一些Code实例(组图))
你想了解网页中Python爬取图片(搜狗图片)的相关内容吗,dearvee将为你讲解Python爬取网页图片的相关知识以及本文中的一些代码示例,欢迎阅读指正,我们先重点:python爬取网页图片,python3爬取网页图片,python爬取网页数据,一起来学习吧。
前言
这几天研究了一直好奇的爬虫算法。以下是我这几天的总结。在下方输入文字:
您可能需要的工作环境:
Python3.6官网下载
本地下载
我们这里使用搜狗作为爬取对象。
首先,我们进入搜狗图片,进入壁纸分类(当然,这只是一个例子Q_Q),因为如果你需要爬取某个网站信息,那么你必须对它有一个初步的了解。 ..
进入后就是这样,然后F12进入开发者选项,我用的是Chrome。
右键单击图像>>检查
发现我们需要的图片的src在img标签下,所以我们先尝试用Python的requests提取组件,然后获取img的src,然后使用urllib.request.urlretrieve下载图片一、从而达到批量获取数据的目的,思路不错现在,下面应该告诉程序要爬取的url是%B1%DA%D6%BD,这个url来自后面的地址栏进入分类。现在我们了解了url地址,让我们开始快乐的代码时间:
在编写这个爬虫程序的时候,最好一步一步调试,确保我们的每一步操作都是正确的。这也是程序员应该具备的好习惯。我不知道我是不是程序员。我们来分析一下url指向的网页。
import requests
import urllib
from bs4 import BeautifulSoup
res = requests.get('http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD')
soup = BeautifulSoup(res.text,'html.parser')
print(soup.select('img'))
输出:
发现输出的内容中并没有我们想要的图片元素,只是解析了logo的img,这显然不是我们想要的。也就是说,需要的图片数据不在url中,即%B1%DA%D6%BD。因此,考虑到元素可能是动态的,细心的同学可能会发现,在网页上向下滑动鼠标滚轮时,图片是动态刷新的,也就是说网页不是一次性加载所有资源,而是动态加载资源。这也避免了由于网页过于臃肿而影响加载速度。下面开始痛苦的探索。我们正在尝试找到所有图片的真实网址。作者也是新手,所以我在寻找这个方面不是很有经验。最后找到的位置是 F12>>Network>>XHR>>
发现它有点接近我们需要的元素。点击all_items,发现下面是0 1 2 3...一个一个好像是图片元素。尝试打开一个网址。发现真的是图片的地址。找到目标后。单击 XHR 下的标题
获得第二行
请求网址:
%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1536&height=864,尽量去掉一些不必要的部分,诀窍是把可能的部分去掉之后部分,访问不受影响。由作者过滤。最终的url:%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15 字面意思,知道类别后面可能跟一个类别。start为起始下标,len为长度,即图片数量。好吧,让我们玩得开心编码:
开发环境为Win7 Python 3.6。运行时,Python 需要安装请求。
Python3.6 安装请求应 CMD 类型:
pip install requests
笔者这里也是边调试边写,这里贴出最终代码:
import requests
import json
import urllib
def getSogouImag(category,length,path):
n = length
cate = category
imgs = requests.get('http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+cate+'&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(n))
jd = json.loads(imgs.text)
jd = jd['all_items']
imgs_url = []
for j in jd:
imgs_url.append(j['bthumbUrl'])
m = 0
for img_url in imgs_url:
print('***** '+str(m)+'.jpg *****'+' Downloading...')
urllib.request.urlretrieve(img_url,path+str(m)+'.jpg')
m = m + 1
print('Download complete!')
getSogouImag('壁纸',2000,'d:/download/壁纸/')
程序运行的时候,笔者还是有些激动的。来感受一下:
至此,爬虫的编程过程的描述就完成了。整体来说,找到元素需要爬取的url是爬虫很多方面的关键
总结
以上就是这个文章的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助。有问题可以留言交流,谢谢支持。
相关文章