python抓取动态网页(Python爬取网页图片的相关知识和一些Code实例(组图))

优采云 发布时间: 2022-03-03 03:17

  python抓取动态网页(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是爬虫很多方面的关键

  总结

  以上就是这个文章的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助。有问题可以留言交流,谢谢支持。

  相关文章

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线