当我点击网站上的旧帖子时,是否有机会检索DOM结果:
http://www.facebook.com/FamilyGuy
使用C#还是Java?我听说可以用onclick
执行脚本并获得结果。我如何执行这个脚本:
onclick="(JSCC.get('j4eb9ad57ab8a19f468880561') && JSCC.get('j4eb9ad57ab8a19f468880561').getHandler())(); return false;"
答案 0 :(得分:0)
我认为older posts
链接会发送Ajax
请求并将响应附加到该页面。 (我不确定。你应该查看页面来源)。
您可以在C#
,Java
和JavaScript
中模仿此行为(您已经拥有javascript代码)。
编辑:
似乎Facebook
使用某种内部API(JSCC
)来加载内容并且没有记录内容。
我不了解Facebook
开发人员的API(您可能想先检查一下),但如果您想要模拟浏览器中发生的事情,那么您可以使用TamperData
拦截{当您点击GET
链接并找到请求网址及其参数时,{1}}会提出请求。
获得此信息后,您必须more posts
到您的应用中的帐户并获取身份验证Cookie。
Login
示例代码:
C#
然后,您可以使用自己的Cookie执行private CookieContainer GetCookieContainer(string loginURL, string userName, string password)
{
var webRequest = WebRequest.Create(loginURL) as HttpWebRequest;
var responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();
responseReader.Close();
// Now you may need to extract some values from the login form and build the POST data with your username and password.
// I don't know what exactly you need to POST but again a TamperData observation will help you to find out.
string postData =String.Format("UserName={0}&Password={1}", userName, password); // I emphasize that this is just an example.
// cookie container
var cookies = new CookieContainer();
// post the login form
webRequest = WebRequest.Create(loginURL) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.CookieContainer = cookies;
// write the form values into the request message
var requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write(postData);
requestWriter.Close();
webRequest.GetResponse().Close();
return cookies;
}
次请求,使用GET
使用URL
分析JSCC.get().getHandler()
个请求时获得TamperData
,最后是'我会得到你想要的响应流:
var webRequest = WebRequest.Create(url) as HttpWebRequest;
webRequest.CookieContainer = GetCookieContainer(url, userName, password);
var responseStream = webRequest.GetResponse().GetResponseStream();
您还可以使用Selenium
进行浏览器自动化。它还有C#
和Java
API(我没有使用Selenium
的经验。)
答案 1 :(得分:0)
Facebook使用AJAX动态加载内容。您可以使用Firebug之类的工具来检查发出了哪种请求,然后复制它。
或者您可以使用像webkit这样的浏览器渲染引擎来为您处理JavaScript并公开生成的HTML: http://webscraping.com/blog/Scraping-JavaScript-webpages-with-webkit/