用webBrowser翻页抓取,该怎么解决
用webBrowser翻页抓取
页面有一个js翻页,想抓每页的内容,下面代码只能抓到第一页的数据。
------解决方案--------------------
分页,也就是分开加载,你的页面只加载了第一页,当然只有一页的数据了,想抓去所有页,就要post和get每页的数据,然后分别获取数据,提取整合~~
------解决方案--------------------
我每一次都强调,对于王爷分析程序,不要扯到什么“正则”上。
给你写个
页面有一个js翻页,想抓每页的内容,下面代码只能抓到第一页的数据。
public Form1()
{
InitializeComponent();
string url = "http://www.xxxx.cc/";
webBrowser1.Navigate(url);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
for (int i = 1; i < 8; i++)
{
string[] args = { "AspNetPager1", i.ToString() };
webBrowser1.Document.InvokeScript("__doPostBack", args);
if (webBrowser1.IsBusy == false && webBrowser1.StatusText == "完成")
{
string body = webBrowser1.Document.Body.OuterHtml;
string exp = " 共([\\s\\S]*?)页,当前为第([\\s\\S]*?)页,每页10条";
Match match = Regex.Match(body, exp, RegexOptions.IgnoreCase);
string num = match.Groups[2].Value.ToString();
}
}
}
------解决方案--------------------
分页,也就是分开加载,你的页面只加载了第一页,当然只有一页的数据了,想抓去所有页,就要post和get每页的数据,然后分别获取数据,提取整合~~
------解决方案--------------------
我每一次都强调,对于王爷分析程序,不要扯到什么“正则”上。
给你写个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.webBrowser1.DocumentCompleted += First_DocumentCompleted;
}
public class session
{
public int 页号;
public Uri uri;
}
private List<session> Pages;
private int TryInt(string s)
{
int x;
if (!int.TryParse(s, out x))
return -1;
return x;
}
void First_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)