首页 新闻 会员 周边

关于C#爬虫

0
悬赏园豆:20 [已解决问题] 解决于 2017-09-20 18:08

小弟用HttpWebRequest来模拟登陆并从一个网站上下载文件,这个网站下载文件的具体流程如下:1,用户名密码登陆。2,输入检索条件,检索条件作为POST的数据被提交到下一页面。3,在下一页面会展示一些根据第2部检索出来的信息,继续在第3步展示的页面进行条件的输入,点击下载,完成文件的下载。第3步中的点击下载是一个onclick的js,我只能想到用F12查看POST数据并继续模拟请求得到HttpWebResponse并获取流,从流中下载文件。

问题:上述步骤中,我用HttpWebRequest进行登陆并保存Cookie到第2步,问题是,我如何保存第2步中的检索条件到第3步?还是面对此类问题有其他更好的方法而不是用HttpWebRequest?

wall-ee的主页 wall-ee | 初学一级 | 园豆:159
提问于:2017-09-18 19:37
< >
分享
最佳答案
0

同学你适合玩玩webDriver就行了。这个不是这么玩的,数据的模拟很多时候不需要视图数据一步一步来——除非像阿里那样全动态页面。

收获园豆:20
花飘水流兮 | 专家六级 |园豆:13560 | 2017-09-18 20:47

请问有没有一个比较完整的文档或者教程可以看看的。谢过

wall-ee | 园豆:159 (初学一级) | 2017-09-18 21:28

@wall-ee: 

protected RemoteWebDriver CreateWebDriver()
{
var chromeOptions = new ChromeOptions();
chromeOptions.AddAdditionalCapability(CapabilityType.UnexpectedAlertBehavior, "accept", true);
chromeOptions.AddArgument("no-sandbox");
chromeOptions.AddArgument("--disable-popup-blocking");
chromeOptions.AddArgument("--disable-notifications");
chromeOptions.AddUserProfilePreference("download.default_directory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Abc"));
//chromeOptions.AddArgument("--disable-extensions");
//chromeOptions.BinaryLocation = @"Chrome\chrome.exe";
//chromeOptions.AddAdditionalCapability(CapabilityType.HandlesAlerts, false);
var chromeDriverService = ChromeDriverService.CreateDefaultService();//binPath + "/driver"
chromeDriverService.HideCommandPromptWindow = true;
var remoteDriver = new ChromeDriver(chromeDriverService, chromeOptions);
remoteDriver.Manage().Cookies.DeleteAllCookies();
return remoteDriver;
}

花飘水流兮 | 园豆:13560 (专家六级) | 2017-09-19 20:21

@花飘水流兮: 通过你的方法解决了问题,谢谢

wall-ee | 园豆:159 (初学一级) | 2017-09-20 18:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册