啥是 POST 请求呢?我们在做一些信息提交的时候 比如注册,登录这时候我们做的就是 POST 请求,POST 的参数不会直接放在 URL 上,会以 Form 表单的形式将数据提交给服务器。 我们来登录一下ip.16yun.cn:817
还有就是请求头Header,我们在做 HTTP 请求的时候,除了提交一些参数之外,我们还有定义一些 HTTP 请求的头部信息,比如 Accept、Host、cookie、User-Agent等等,这些参数也是我们在做爬虫要用到,通过这些信息,欺骗服务器,告诉它我们是正规请求。 比如,我们可以在代码里面设置 cookie 告诉服务器我们就是在这个浏览器请求的会话,User-Agent 告诉服务器我们是浏览器请求的,说完我们这边的请求了.接着我们再说说服务器的响应你一定遇到过 404 页面吧,或者服务器错误返回个 502 ,这些 404 ,200,301,502都是服务器的响应码,一般服务器给我们返回 200,那就说明,我们成功请求了。再来说说响应头,当我们请求成功之后,服务器会给我们返回响应码之外,还有响应头,这个头主要是告诉我们数据以什么样的形式展现,告诉我们cookie的设置,还有一个,就是响应体了。说白了,就是服务器返回给我们的数据,我们点击 Response 就可以看到相关的数据了。 这些都是我们学习爬虫过程的一些基本知识,大家应该都比较熟悉,那对我们来说比较难的是如何使用浏览器去获取数据,这里简单的示例下: import org.json.JSONException; import org.json.JSONObject; import org.openqa.selenium.Platform; import org.openqa.selenium.Proxy; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities;
import com.gargoylesoftware.htmlunit.DefaultCredentialsProvider; import com.gargoylesoftware.htmlunit.WebClient;
public class FirefoxDriverProxyDemo { // 代理隧道验证信息 final static String proxyUser = "username"; final static String proxyPass = "password";
// 代理服务器
final static String proxyHost = "t.16yun.cn";
final static int proxyPort = 31111;
final static String firefoxBin = "C:/Program Files/Mozilla Firefox/firefox.exe";
public static void main(String[] args) throws JSONException
{
System.setProperty("webdriver.firefox.bin", firefoxBin);
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.proxy.type", 1);
profile.setPreference("network.proxy.http", proxyHost);
profile.setPreference("network.proxy.http_port", proxyPort);
profile.setPreference("network.proxy.ssl", proxyHost);
profile.setPreference("network.proxy.ssl_port", proxyPort);
profile.setPreference("username", proxyUser);
profile.setPreference("password", proxyPass);
profile.setPreference("network.proxy.share_proxy_settings", true);
profile.setPreference("network.proxy.no_proxies_on", "localhost");
FirefoxDriver driver = new FirefoxDriver(profile);
}
}