python动态网页图片爬取

动态网站跟静态网站的区别

python图片爬虫中,我们爬取的是静态网站。那么静态网站跟动态网站有什么区别呢?其中对于我们写爬虫来说,最大的区别就是用requests.get()获取到的信息,动态网站是不全的。要想从动态网站里获取到需要的信息,就需要按F12通过开发者工具进行分析。




开发者工具简单教程
面板说明
元素面板(Elements)该面板可查看渲染页面所需的HTML、CSS和DOM对象,并可实时编辑这些元素调试页面渲染效果
控制台面板(Console)该面板可记录各种警告与错误信息,并可作为shell在页面上与JavaScript交互
源代码面板(Sources)该面板可设置调试JavaScript的断点
网络面板(Network)该面板可查看页面请求、下载的资源文件,以及优化网页加载性能。还可查看HTTP的请求头、响应内容等

在这里,我们主要用到网络面板(Network)。
对于网站https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E7%88%B1%E4%B8%BD%E4%B8%9D
如果我们想爬取上面的图片,首先要进行的就是“抓包”。通俗来讲,就是找到该网站到底把图片藏在哪个文件里了。




下面是我爬取的全过程


一、找到我们想要的url(网址)

首先打开网站,然后按F12,会出来开发者工具。然后我们点击Network

在这里插入图片描述
这时候按F5刷新一下,就会加载出一些文件。
在这里插入图片描述

可以稍微往下滑动一下页面,以便加载文件。这时,我们点击XHR选项,查看XHR类型的文件(因为大多数信息会放在这类文件中)。点击preview,我们就能看到里面的json信息。
在这里插入图片描述
然后通过一个解析json的网站解析里面的json信息,就可以找到照片的连接了。链接:https://www.json.cn/

在这里插入图片描述
这时,该文件的链接即为我们想要的url(网页)
在这里插入图片描述




二、代码部分
先上代码:
import urllib.request
import requests, json
import re

#爬取网页地址
url = "https://image.baidu.com/search/acjson?tn=resultjson_com&logid=7779558212680695729&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E7%88%B1%E4%B8%BD%E4%B8%9D&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=&copyright=&word=%E7%88%B1%E4%B8%BD%E4%B8%9D&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=1&fr=&expermode=&force=&cg=star&pn=90&rn=30&gsm="
#防止被网页禁止访问
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'}
html = requests.get(url,headers = header, timeout = 60).json()
obj_list = html['data']
x = 0
for img in obj_list:
    if(img):
        print(img["thumbURL"])
        urllib.request.urlretrieve(img["thumbURL"],'E:\\python\\爬虫数据\\%s.jpg'%x)
        x += 1



在刚才的网站中,我们解析了该url中的json信息。在json信息中我们发现,图片的链接是一串蓝色的链接。而且当我们打开该链接,跳转的网页确实是图片。所以我们只需要抓取链接信息就可以了。
在这里插入图片描述
显然,图片链接放在了data中的thumbURL里(middleURL等也是)。所以我们只需要提取这里面的信息并下载就可以了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值