php网页抓取图片(动态网页的爬取相比静态网页是有利有弊 )

优采云 发布时间: 2021-09-21 21:16

  php网页抓取图片(动态网页的爬取相比静态网页是有利有弊

)

  动态网页的爬行比静态网页更困难,主要是因为许多网站使用ajax和动态HTML相关技术进行页面交互,因此不可能使用request或urlib获得完整的页面HTML内容。下面主要介绍两种捕获动态网页的方法,它们基本上各有优缺点

  一、Ajax和动态HTML

  AJAX的全称是异步JavaScript和XML。它的中文名称是异步JavaScript和XML。它是JavaScript异步加载技术、XML和DOM以及表示技术XHTML和CSS的组合。使用Ajax技术,我们不必刷新整个页面,只需更新页面的一部分即可。Ajax只检索一些必要的数据。它使用soap、XML或JSON支持的web服务接口。我们在客户端使用JavaScript处理来自服务器的响应,从而减少了客户端和服务器之间的数据交互,提高了访问速度和用户体验。例如,在注册邮箱时,AJAX技术被广泛用于用户名唯一性验证

  DHTML是动态HTML的缩写,即动态HTML。它是相对于传统静态HTML制作网页的一个概念。所谓的动态HTML(DHTML)不是一种新语言。它只是HTML、CSS和客户端脚本的集成,也就是说,一个页面收录HTML+CSS+JavaScript(或其他客户端脚本)。例如,腾讯新闻详情页面首次仅加载少量页面数据。部分数据隐藏在JavaScript脚本中,使用请求库无法完全获取页面HTML

  二、确定动态和静态网页

  1、在浏览器设置中打开“禁用JavaScript”选项。以最新版本的Chrome浏览器为例。点击浏览器中的“自定义和控制谷歌浏览器”按钮,在左侧的“设置”中选择“隐私设置和安全”

  单击右栏中的“网站settings”,然后选择底部的“JavaScript”

  

  单击“允许(建议)”之后的开关控件

  将选项“允许(建议)”调整为“禁止”

  完成后,关闭设置并打开要爬网的网页。如果页面内容不完整或未显示任何内容。表示动态网页。设置后,读者可以打开腾讯新闻,发现网页上没有内容

  2、使用请求库获取目标网页的HTML内容并打印出来。将输出内容另存为HTML。打开本地HTML以检查页面内容是否完整。以腾讯新闻COM/CH/ENT/为例,编写以下代码并将打印(r.text)结果保存为D:\News.html。在本地打开news.html以查看页面的显示效果。页面缺失部分通过动态网页技术实现

  import requests

url='https://new.qq.com/ch/ent'

r=requests.get(url)

print(r.text)

import csv

def save(item, path): # path文件保存路径,item数据列表

with open(path, "w+", newline='') as f:

write = csv.writer(f)

write.writerows(item)

save(r.text,"d:/test2.html")

  三、JSON数据分析

  Python通常使用标准库JSON将字符串转换为JSON对象。解析JSON模块有两种主要方法:JSON.load和JSON.load。Json.load用于将Json字符串解析为Json对象,Json.load将数据从读取的Json文件转换为Json对象

  import json #导入json模块

jsonstr='{"ccode":"010101","cname":"数据采集与处理","sinfo":[{"scode":"123456","sname":"bob"},{"scode":"123457","sname":"dog"}]}'

obj=json.loads(jsonstr)

print(type(obj)) #obj是字典型

print(obj["ccode"]) #访问属性

print(type(obj["sinfo"])) #列表

for row in obj["sinfo"]:

print(row["sname"])

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线