request-html获取渲染后的web源码

request-html获取渲染后的web源码,第1张

首先可以先去用requests库访问url来测试一下能不能拿到数据,如果能拿到那么就是一个普通的网页,如果出现403类的错误代码可以在requests.get()方法里加上headers.

如果还是没有一个你想要的结果,打印出来 的只是一个框架,那么就可以排除这方面了。就只可能是ajax或者是javascript来渲染的。

就可以按照下图去看一下里面有没有

本次先重点去讲一下关于js来渲染网页的数据爬取,这下面的数据是随机找的,只要是里面想要爬取的数据就行 了。

这里ctrl+f就可以搜索到了说明就是在这个js的文件里面

这个就是真正的数据。

剩下的就是可以利用xpath,beautifulsoup或者pyquery来解析得到的网页源码就可以了。

这里我个人推荐此处用pyquery比较方便简单一些。

使用WebBrowser控件获取网页源码的方法,大多数的人都是使用以下的方法获取:

(WebBrowser1.Document as IHtmlDocument2).body.outerHtml

这种方法的美中不足就是只能获取网页<body>与</body>之间的网页源码,而<body>之外如<head>部分的网页源码就获取不到了,下面是某大牛老师给大家分享的方法,可参考:

procedure TForm1.Button1Click(Sender: TObject)

var

ole_index, oleObj: OleVariant

i: integer

begin

if WebBrowser1.Busy then Exit //网页加载中,退出。

Memo1.Lines.Clear

//获取主框架网址及网页源码

Memo1.Lines.Add(WebBrowser1.OleObject.document.url)

Memo1.Lines.Add(WebBrowser1.OleObject.document.documentElement.outerHTML)

Memo1.Lines.Add(' ')Memo1.Lines.Add(' ')//添加空行

//循环获取每一个子框架网址及网页源码

for i := 0 to WebBrowser1.OleObject.document.frames.length - 1 do

begin

ole_index := i

oleObj := WebBrowser1.OleObject.document.frames.item(ole_index)

Memo1.Lines.Add(oleObj.document.url)

Memo1.Lines.Add(oleObj.document.documentElement.outerHtml)

Memo1.Lines.Add(' ')Memo1.Lines.Add(' ')//添加空行

end

end


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/52571.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-25
下一篇2023-02-25

发表评论

登录后才能评论

评论列表(0条)

    保存