首先可以先去用requests库访问url来测试一下能不能拿到数据,如果能拿到那么就是一个普通的网页,如果出现403类的错误代码可以在requestsget()方法里加上headers
如果还是没有一个你想要的结果,打印出来 的只是一个框架,那么就可以排除这方面了。就只可能是ajax或者是javascript来渲染的。
就可以按照下图去看一下里面有没有
本次先重点去讲一下关于js来渲染网页的数据爬取,这下面的数据是随机找的,只要是里面想要爬取的数据就行 了。
这里ctrl+f就可以搜索到了说明就是在这个js的文件里面
这个就是真正的数据。
剩下的就是可以利用xpath,beautifulsoup或者pyquery来解析得到的网页源码就可以了。
这里我个人推荐此处用pyquery比较方便简单一些。
启用JavaScript
定义Java接口,暴露方法给JavaScript
绑定一个命名为Android的接口给WebView,
在JavaScript中使用这个接口
点击WebView中的链接的默认行为是启动默认浏览器打开这个URL。如果想要在自己的WebView中打开:
复写WebViewClient的shouldOverrideUrlLoading方法:
canGoBack()如果实际存在用户要访问的网页历史记录,则该方法返回true。同样,您可以使用canGoForward()检查是否存在转发历史记录。如果您不执行此检查,则一旦用户到达历史记录的末尾,goBack()或goForward()什么都不做。
WebSettings用来对WebView做各种设置, 你可以这样获取WebSettings:
<pre><code>
WebSettings webSettings = mWebView getSettings();
</code></pre>
WebSettings的常见设置如下所示:
WebViewClient用来帮助WebView处理各种通知, 请求事件。我们通过继承WebViewClient并重载它的方法可以实现不同功能的定制。主要方法:
WebChromeClient用来帮助WebView处理JS的对话框、网址图标、网址标题和加载进度等。同样地, 通过继承WebChromeClient并重载它的方法也可以实现不同功能的定制, 如下所示:
部分代码如下:
在窗口及WebBrowser创建完以后,写此代码:
WebBrowserOnNewWindow2:=IE1NewWindow2;
给主窗口创建一个方法:
procedure TBrowFormIE1NewWindow2(Sender: TObject; var ppDisp: IDispatch;var Cancel: WordBool);
Var NewForm:TBrowForm;
begin
try
NewForm :=TPopBrowerFormCreate(application);
NewFormWebBrowserOnNewWindow2 :=IE1NewWindow2;//如果在窗口的Oncreate事件
//有此代码,此处就可以省略
ppDisp := NewFormWebBrowserApplication;
NewFormShow;
Cancel:=false;
except
end;
end;
直接是不行的。
1、用c#往webbrowser里面外层网页注入一段javascript,这段javascript的作用是向iframe注入代码。
2、向iframe注入的代码的作用是获取document的源代码;
3、把获取到的源代码返回到外层网页里面的一个对象里。
4、用c#从外层网页取这个源代码。
以上就是关于request-html获取渲染后的web源码全部的内容,包括:request-html获取渲染后的web源码、Android WebView、WPF的WebBrowser如何获取跳转后的页面源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)