C# 使用C进行屏幕抓取#
如何使用C#?您可以使用System.Net.WebClient启动HTTPS连接,并下拉页面以使用该连接进行刮取。查看。如果出于某种原因,您在作为web客户端访问页面时遇到问题,或者希望使请求看起来像来自浏览器,您可以在应用程序中使用web浏览器控件,在其中加载页面,并使用web浏览器控件中加载内容的源。您可以使用System.Net.WebClient抓取网页。这里有一个例子:这里有一个具体的(尽管很琐碎)例子。您可以在querystring中将船名传递给VesselFinder,但即使它只找到一艘具有该船名的船,它仍会显示一艘船的搜索结果屏幕。本例检测到这种情况,并将用户直接带到船舶的跟踪地图C# 使用C进行屏幕抓取#,c#,https,screen-scraping,html-content-extraction,C#,Https,Screen Scraping,Html Content Extraction,如何使用C#?您可以使用System.Net.WebClient启动HTTPS连接,并下拉页面以使用该连接进行刮取。查看。如果出于某种原因,您在作为web客户端访问页面时遇到问题,或者希望使请求看起来像来自浏览器,您可以在应用程序中使用web浏览器控件,在其中加载页面,并使用web浏览器控件中加载内容的源。您可以使用System.Net.WebClient抓取网页。这里有一个例子:这里有一个具体的(尽管很琐碎)例子。您可以在querystring中将船名传递给VesselFinder,但即使它只
string strName = "SAFMARINE MAFADI";
string strURL = "https://www.vesselfinder.com/vessels?name=" + HttpUtility.UrlEncode(strName);
string strReturnURL = strURL;
string strToSearch = "/?imo=";
string strPage = string.Empty;
byte[] aReqtHTML;
WebClient objWebClient = new WebClient();
objWebClient.Headers.Add("User-Agent: Other"); //You must do this or HTTPS won't work
aReqtHTML = objWebClient.DownloadData(strURL); //Do the name search
UTF8Encoding utf8 = new UTF8Encoding();
strPage = utf8.GetString(aReqtHTML); // get the string from the bytes
if (strPage.IndexOf(strToSearch) != strPage.LastIndexOf(strToSearch))
{
//more than one instance found, so leave return URL as name search
}
else if (strPage.Contains(strToSearch) == true)
{
//find the ship's IMO
strPage = strPage.Substring(strPage.IndexOf(strToSearch)); //cut off the stuff before
strPage = strPage.Substring(0, strPage.IndexOf("\"")); //cut off the stuff after
}
strReturnURL = "https://www.vesselfinder.com" + strPage;
如果您需要登录以获取https内容?您需要确保在WebClient中为Cookie分配Cookie容器,以便通过多个请求(例如登录页面和内容页面)传递Cookie。该网站正在使用URL重写。如何获取完整的URL?如果您谈论的是服务器端URL重写,则不知道。但如果你说的是javascript,只需在代码中对其进行解析。我使用的是Firefox插件“脾气数据”。它显示所有发布的数据。link dead:我认为这可能是更新的链接-实际上这不是一个坏主意。