ASP.NET 怎样抓取指定页面的数据

ASP.NET 怎样抓取指定页面的数据,第1张

使用ASPNET的网页代码获取代码:

private string GetStringByUrl(string strUrl)

{

WebRequest wrt = WebRequestCreate(strUrl);

WebResponse wrse = wrtGetResponse();

Stream strM = wrseGetResponseStream();

StreamReader SR = new StreamReader(strM, EncodingGetEncoding("gb2312"));

string strallstrm = SRReadToEnd();

return strallstrm;

}

(感谢楼下提供。。。)

然后,你将你需要截取的网页文本保存成TXT或者其他格式的,找到标题对应的div标签,以及内容对应的div标签,使用文本过滤,将这2段提取出来,经过除HTML代码处理,即可得到纯文本,以供提交到服务器上。

只能通过JavaScript来获取, 然后通过JS获取, 然后通过JavaScriptInterface来传递给Java层。\x0d\\x0d\做webview,遇到2种需求,一种是在自己服务器上的HTML中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据。\x0d\于是,总结了2种通过webview获取网页上的数据的方式:\x0d\第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给Android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls))。\x0d\\x0d\class MyJavaScriptInterface {\x0d\\x0d\ MyJavaScriptInterface() {\x0d\ }\x0d\\x0d\ /\x0d\ js调java,显示\x0d\ \x0d\ @param imgUrls\x0d\ /\x0d\ @JavascriptInterface\x0d\ public void showImages(String[] imgUrls) {\x0d\ LogUtilsi(TAG, "imgUrls = " + imgUrls[0]);\x0d\ NewsDetailWebviewActivitythisimgUrls = imgUrls;\x0d\ }\x0d\}\x0d\\x0d\\x0d\webViewaddJavascriptInterface(new MyJavaScriptInterface(), "faxun");\x0d\\x0d\第二种:有点复杂,通过webview注册一个本地接口后,然后通过java调js,拿到document对象后,解析HTML标签,然后数据会通过本地接口中的回调方法传递给Android端,(前提:HTML页面中的meta标签中有对应的reply_info名称和content属性,数据是封装在content里面的json格式的字符串)。\x0d\\x0d\class MyWebClient extends WebViewClient {\x0d\@Override\x0d\ public void onPageFinished(WebView view, String url) {\x0d\ viewloadUrl("javascript:windowgetShareDataOnGetShareData("\x0d\ + "documentquerySelector('meta[name=\"reply_info\"]')getAttribute('content')" + ");");\x0d\ superonPageFinished(view, url);\x0d\ }\x0d\}\x0d\\x0d\private class GetShareDataInterface {\x0d\ @JavascriptInterface\x0d\ public void OnGetShareData(String shareData) {\x0d\ if (null != shareData) {\x0d\ try {\x0d\ JSONObject shareJson = new JSONObject(shareData);\x0d\ title = shareJsonoptString("title");\x0d\ description = shareJsonoptString("description");\x0d\ imageUrl = shareJsonoptString("imageUrl");\x0d\ } catch (JSONException e) {\x0d\ eprintStackTrace();\x0d\ }\x0d\\x0d\ }\x0d\ }\x0d\ }\x0d\\x0d\\x0d\webViewsetWebViewClient(new MyWebClient());\x0d\\x0d\其实,如果是普通的需求,两种方式都可以解决问题,但是如果是有些HTML没有做js调java,只是个普通的HTML,并且需要获取页面上的数据时,只能通过第二种方式来获取HTML上的数据了,比如获取HTML上的title等等。

1通过网址传递:

请求页面:、<A href="targetaspxparam1=Value1 & param2=Value2">链接地址传送</A>

响应页面:string str = Request["param1"];

string str = Request["param2"];

………………

2Session共享,每个用户都会有一个session

请求页面:Session("param1") = "1111";

接收页面 string str = Session("param1")ToString();

3Application共享,整个网站的任意页面都可以访问,包括不同用户(session)

发送页面: Application("param1") = "1111";

按收页面: string str = Application("param1")ToString();

此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。

4Cookie,保存在本地

5ResponseRedirect()方式,跟第一种差不多,只是跳转方法不一样

ResponseRedirect("targetaspxparam1=1111 & param2=2222")

接收页面: string str = Request["param1"]

ServerTransfer()方式,跟第一种差不多,只是跳转方法不一样

ServerTransfer("targetaspxparam1=1111 & param2=2222")

接收页面: string str = Request["param1"]

6如果需要传递更多的值,可以考虑,定义一个类,类中定义相应的属性,传递的时候为属性赋值,接收页面再读取,这样就可以了

这类本地 *** 作,没有纯 web 解决方案

仅仅浏览器内页面脚本是无法做到的。

其核心是需要可跑在本地系统上的串口读取程序

不管 ActiveX、本地Node、或者本地其他应用程序都是如此

此外,还需要读取后可与浏览器页面交换数据的过程

所以,ActiveX (NAPAI)之类的浏览器 plugin 的确是比较直接的实现方式

而其他的方案,还需要本地启动服务(>

这个连接介绍的方法在实践中并不经常使用,因为很原始。它适合 *** 作本地文件。 1如若你是获取xml,那应该使用 simplexml_load_file('url')这个函数,他返回一个xml的DOM模型对象,这个模块是专门针对xml应用设计的。具体可以查找php的simpleXML相关应用。 2如果你是获取html。那么,php中几乎所有的目录函数都支持远程 *** 作,即文件参数可以是网址。最适合的函数是file_get_contents('url'),他返回文件内容。 但是大部分免费空间禁止远程调用,如果是这样,fopen()或者其他函数都是不行的。那就只能在网页中用javascript获取然后处理或者送回网站处理,此方面内容属于ajax技术,你可以搜索一下。 3你如果要用到比较复杂一点的功能,比如要打开的页面 需要登陆,或者需要模拟cookie,就要用php的cURL库扩展,你可以找一下相关资料 我不能用一篇短文使你学会这几个模块的具体应用。

只能通过JavaScript来获取, 然后通过JS获取, 然后通过JavaScriptInterface来传递给Java层。

做webview,遇到2种需求,一种是在自己服务器上的HTML中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据。

于是,总结了2种通过webview获取网页上的数据的方式:

第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给Android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls))。

class MyJavaScriptInterface {

MyJavaScriptInterface() {

}

/

js调java,显示

@param imgUrls

/

@JavascriptInterface

public void showImages(String[] imgUrls) {

LogUtilsi(TAG, "imgUrls = " + imgUrls[0]);

NewsDetailWebviewActivitythisimgUrls = imgUrls;

}

}

webViewaddJavascriptInterface(new MyJavaScriptInterface(), "faxun");

第二种:有点复杂,通过webview注册一个本地接口后,然后通过java调js,拿到document对象后,解析HTML标签,然后数据会通过本地接口中的回调方法传递给Android端,(前提:HTML页面中的meta标签中有对应的reply_info名称和content属性,数据是封装在content里面的json格式的字符串)。

class MyWebClient extends WebViewClient {

@Override

public void onPageFinished(WebView view, String url) {

viewloadUrl("javascript:windowgetShareDataOnGetShareData("

+ "documentquerySelector('meta[name=\"reply_info\"]')getAttribute('content')" + ");");

superonPageFinished(view, url);

}

}

private class GetShareDataInterface {

@JavascriptInterface

public void OnGetShareData(String shareData) {

if (null != shareData) {

try {

JSONObject shareJson = new JSONObject(shareData);

title = shareJsonoptString("title");

description = shareJsonoptString("description");

imageUrl = shareJsonoptString("imageUrl");

} catch (JSONException e) {

eprintStackTrace();

}

}

}

}

webViewsetWebViewClient(new MyWebClient());

其实,如果是普通的需求,两种方式都可以解决问题,但是如果是有些HTML没有做js调java,只是个普通的HTML,并且需要获取页面上的数据时,只能通过第二种方式来获取HTML上的数据了,比如获取HTML上的title等等。

以上就是关于ASP.NET 怎样抓取指定页面的数据全部的内容,包括:ASP.NET 怎样抓取指定页面的数据、WebView怎么获取Html元素的值、关于C#获取某个网页数据的问题,在线等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9810017.html

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

发表评论

登录后才能评论

评论列表(0条)

保存