使用Cookie抓取动态页面

我正试图在此页面上抓取一组邮政编码。https://www.chase.com/mortgage/loan-leg/search-results.html#action-search;zipcode-11747;lastname-;language-

如果将其放在浏览器中,则会获得结果,但是尝试在代码中这样做会失败。

首先我尝试

HttpWebRequest  request = (HttpWebRequest )System.Net.WebRequest.Create(URI);
var sr = new System.IO.StreamReader(resp.GetResponseStream());
string page= sr.ReadToEnd().Trim();

但是fiddler中的插件生成的此代码也无法正常工作。没有结果返回。那我到底想念什么?

private void MakeRequests()
{
    HttpWebResponse response;
    string responseText;

    if (Request_www_chase_com(out response))
    {
        responseText = ReadResponse(response);

        response.Close();
    }
}

private static string ReadResponse(HttpWebResponse response)
{
    using (Stream responseStream = response.GetResponseStream())
    {
        Stream streamToRead = responseStream;
        if (response.ContentEncoding.ToLower().Contains("gzip"))
        {
            streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress);
        }
        else if (response.ContentEncoding.ToLower().Contains("deflate"))
        {
            streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress);
        }

        using (StreamReader streamReader = new StreamReader(streamToRead, Encoding.UTF8))
        {
            return streamReader.ReadToEnd();
        }
    }
}

private bool Request_www_chase_com(out HttpWebResponse response)
{
    response = null;

    try
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.chase.com/mortgage/loan-officer/search-results.html");

        request.KeepAlive = true;
        request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
        request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36";
        request.Headers.Add("DNT", @"1");
        request.Referer = "https://mail.google.com/mail/u/0/?shva=1";
        request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip,deflate,sdch");
        request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.8");
        request.Headers.Set(HttpRequestHeader.Cookie, @"v1st=3B46E5CCD302C2DE; marketlist=68|90|152|170|198; chasezip=zipcode=11577&county=Nassau&state=NY; ASP.NET_SessionId=kwybehscfioasswbl20wb14f; PC_1_0=n%3Dundefined|u%3Dundefined|l%3Dundefined|zip%3D11577|lastUpdate%3D2014-01-24|lastSent%3D2014-01-24|home%3Dpersonal|; SessionPersistence=CLICKSTREAMCLOUD%3A%3DvisitorId%3D%7CPROFILEDATA%3A%3D%7CSURFERINFO%3A%3Dbrowser%3DChrome%2COS%3DWindows%2Cresolution%3D1366x768%7C; fsr.s=%7B%22v2%22%3A-2%2C%22v1%22%3A1%2C%22rid%22%3A%22d464cf6-82273859-c860-572f-2944b%22%2C%22to%22%3A5%2C%22c%22%3A%22https%3A%2F%2Fwww.chase.com%2Fmortgage%2Floan-officer%2Fsearch-results.html%23action-search%3Bzipcode-11747%3Blastname-%3Blanguage-%22%2C%22pv%22%3A12%2C%22lc%22%3A%7B%22d18%22%3A%7B%22v%22%3A12%2C%22s%22%3Atrue%7D%7D%2C%22cd%22%3A18%2C%22sd%22%3A18%2C%22f%22%3A1390649574789%7D");
        request.IfModifiedSince = DateTime.Parse("Fri, 24 Jan 2014 20:18:51 GMT");

        response = (HttpWebResponse)request.GetResponse();
    }
    catch (WebException e)
    {
        if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
        else return false;
    }
    catch (Exception)
    {
        if (response != null) response.Close();
        return false;
    }

    return true;
}
埃里克·劳

要使此工作正常进行,您需要解析HTML,然后下载并运行JavaScript。不用编写您自己的浏览器,而是使用Web浏览器控件加载页面,然后抓取其内部HTML。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用beautifulsoup抓取动态加载页面

来自分类Dev

使用python访问和网页抓取动态页面

来自分类Dev

使用cheerio 抓取页面

来自分类Dev

带有cookie的Python dryscrape抓取页面

来自分类Dev

将在Scrapy中建立的会话Cookie传递给Splash以在抓取js页面中使用

来自分类Dev

动态加载页面的python web抓取

来自分类Dev

如何抓取页面的动态URL?

来自分类Dev

允许Googlebot抓取动态生成的产品页面

来自分类Dev

RSelenium:抓取加载缓慢的动态加载页面

来自分类Dev

如何使用node.js抓取具有动态内容的页面?

来自分类Dev

如何使用PHP从动态网页中抓取页面链接?

来自分类Dev

如何使用python从具有多个动态选择字段的页面中抓取数据?

来自分类Dev

使用Python请求抓取页面

来自分类Dev

使用 Python 抓取特定页面

来自分类Dev

使用python抓取动态内容

来自分类Dev

无限滚动抓取动态电子商务页面

来自分类Dev

Selenium Webdriver用python抓取动态页面找不到元素

来自分类Dev

网页抓取:如何从动态页面获取信息?

来自分类Dev

使用BeautifulSoup网站抓取IMDb页面

来自分类Dev

如何使用BeautifulSoup和Python抓取页面?

来自分类Dev

如何使用Node.js抓取页面

来自分类Dev

Web使用BeautifulSoup抓取多个页面

来自分类Dev

使用硒从多个页面抓取链接

来自分类Dev

使用Python递归抓取页面(草率)

来自分类Dev

如何使用Puppeteer抓取Reddit页面?

来自分类Dev

使用preg_match抓取HTML页面

来自分类Dev

使用Python抓取JavaScript生成的页面

来自分类Dev

如何使用Node.js抓取页面

来自分类Dev

使用python为多个页面抓取网页