苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9242|回复: 15

[其他] 通过这个URL返回的html为空!

[复制链接]
发表于 2013-1-28 14:09:34 | 显示全部楼层 |阅读模式
通过 各种方法  根据传入的http://www.baidu.com/chunjie/show/act#modActivity 这个链接 想获取到该页面的Html  无法获取到  返回值为空   各种方法都用了!


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-1-28 14:56:27 | 显示全部楼层
这个网页是根据Ajax获取的,页面本身并没有什么内容,而是执行Ajax之后加载的,所以你获取不到,如果想得到数据就要去访问Ajajx方法才行,你使用FirBug查看一下吧
 楼主| 发表于 2013-1-28 15:44:33 | 显示全部楼层
哦  那我明白了  我现在想实现 输入手机号和出生日期  登录成功后 点击 分享。现在 单独的登录和单独的点击分享都可以实现了    现在我将这2段代码和到一起 就有问题了,因为登录提交到服务器有延时,这个时候下面点击分享的代码已经开始执行了,所以就出现了问题。我又创建了一个线程,设置了延时,来执行点击分享操作,报错  提示 类型转换无效  就是这句 [code=csharp]HtmlElementCollection btnShares = wb.Document.GetElementById("bdshare").Children;[/code]。是不是我创建的这个webbrowser对象不能用在多线程上呢? 后来查到webbrowser支持sta模式    这个问题 怎么解决呢?
发表于 2013-1-28 15:50:37 | 显示全部楼层
lhkj_duan 发表于 2013-1-28 15:44
哦  那我明白了  我现在想实现 输入手机号和出生日期  登录成功后 点击 分享。现在 单独的登录和单独的点击 ...

可以用在多线程上,只是你如果是自己建的线程,需要使用委托来解决,这个你查一下“委托  多线程”论坛有例子,如果你使用Timer控件是可以直接访问的
 楼主| 发表于 2013-1-28 16:11:23 | 显示全部楼层
我首先考虑的是用timer  结果报错了  后来用的就是 自己创建线程   我是这样写的[code=csharp]Thread thread = new Thread(new ThreadStart(ClickShare));
                thread.SetApartmentState(ApartmentState.STA);
                Thread.Sleep(3000);
                thread.Start();[/code]  其中  clickshare方法 里面执行的是点击分享操作  其中引用了webbrowser控件  现在就是这个方法里的 这个引用报错了
发表于 2013-1-28 17:22:18 | 显示全部楼层
lhkj_duan 发表于 2013-1-28 16:11
我首先考虑的是用timer  结果报错了  后来用的就是 自己创建线程   我是这样写的  其中  clickshare方法 里 ...

这个要看你的方法里执行了什么,发下代码吧
 楼主| 发表于 2013-1-28 17:42:48 | 显示全部楼层
这个方法里的主要代码
  1. private void ClickShare(){
  2. HtmlElementCollection btnShares = webBrowser1.Document.GetElementById("bdshare").Children;//这句报错了  说是转换无效
  3. //然后下面去遍历 这些分享按钮  

  4. }
复制代码
发表于 2013-1-28 18:02:45 | 显示全部楼层
lhkj_duan 发表于 2013-1-28 17:42
这个方法里的主要代码

你不能直接在子线程访问webBrowser1吧,应该使用个委托,因为他是主线程的控件
 楼主| 发表于 2013-1-29 07:52:45 | 显示全部楼层
那应该怎么写呢?
 楼主| 发表于 2013-1-29 07:56:06 | 显示全部楼层
我创建子线程的目的是为了 延迟等待登录后 再点击分享
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 03:04

© 2014-2021

快速回复 返回顶部 返回列表