以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 【求助】如何获取今日头条中的所有页面的网页代码,然后读取文章标题、阅读数、评论数、发布时间到对应的表格中保存 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84510) |
||||
-- 作者:李孝春 -- 发布时间:2016/5/4 9:56:00 -- 【求助】如何获取今日头条中的所有页面的网页代码,然后读取文章标题、阅读数、评论数、发布时间到对应的表格中保存 如何获取今日头条中的所有页面的网页代码,然后读取文章标题、阅读数、评论数、发布时间到对应的表格中保存 下面是获取网页源代码文件: Dim web As new windows.forms.webbrowser web.Navigate("http://toutiao.com/m6051259851/") 我单位在今日头条号的页面 Do Until web.ReadyState = 4 Application.DoEvents Loop Dim getReader = new System.IO.StreamReader(web.DocumentStream, Encoding.Default) Dim str = getReader.ReadToEnd() output.show(str) 下面是执行上述代码后得到网页源代码文件中的几段关键部分: <DIV class=pin-content group_id="6275912267754275074" data-type="context"> <TABLE width=680> <TBODY> <TR> <TD height=35> <H3><A onclick=action_log(this) href="http://toutiao.com/item/6275915046082052609/" target=_blank 文章在今日头条中的地址 ga_label="index_feed" ga_event="source_url">全州检察政治工作暨检察官文联筹备会在瓮安召开</A></H3></TD></TR> 文章标题 <TR> <TD> <DIV class=list_image> <UL> <LI class="img_bg shadow_img"><A onclick=action_log(this) href="http://toutiao.com/item/6275915046082052609/" target=_blank 文章在今日头条中的地址 ga_label="index_feed" ga_event="source_url"><IMG onerror=errorimg.call(this) src="http://p2.pstatp.com/list/5680000b06831514612"></A> </LI> <LI class="img_bg shadow_img"><A onclick=action_log(this) href="http://toutiao.com/item/6275915046082052609/" target=_blank ga_label="index_feed" ga_event="source_url"><IMG onerror=errorimg.call(this) src="http://p2.pstatp.com/list/5690008f7f4463406b1"></A> </LI> <LI class="img_bg shadow_img"><A onclick=action_log(this) href="http://toutiao.com/item/6275915046082052609/" target=_blank ga_label="index_feed" ga_event="source_url"><IMG onerror=errorimg.call(this) src="http://p2.pstatp.com/list/56a0008d02e19a3e7a5"></A> </LI></UL></DIV> 文章中的插图 <DIV class=text>4月20日,全州检察政治工作暨检察官文联筹备会在瓮安县检察院召开。州检察院党组成员、副检察长潘凤敏,州院党组成员、政治部主任刘雪红,《法治生活报》专题部主任罗翔,州院政治部全体成员,各县、市检察院分管领导和政工同志参加会议。会议由州院政治部宣传科科长黄永荣主持。</DIV> <DIV class=clearfix></DIV></TD></TR> <TR> <TD> <TABLE class=item_info width="100%"> <TBODY> <TR> <TD>阅读: 516</TD> 文章的阅读数、评论数、发布时间 <TD>评论: 0</TD> <TD align=right>2016-04-21 15:47 </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></DIV></DIV> 经过观察,今日头条会每页显示20条信息,多余的按页显示 下面是按页代码 <DIV id=pagebar class=pagebar><A class="pagebar_step pagebar_step_current " href="http://toutiao.com/m6051259851/">1</A> <A class="pagebar_step " href="http://toutiao.com/m6051259851/p2/">2</A> <A class="pagebar_step " href="http://toutiao.com/m6051259851/p3/">3</A> <A class="pagebar_step " href="http://toutiao.com/m6051259851/p4/">4</A> <A class="pagebar_step " href="http://toutiao.com/m6051259851/p5/">5</A> <A class="pagebar_step " href="http://toutiao.com/m6051259851/p6/">6</A> <A class="pagebar_turn pagebar_turn_next" href="http://toutiao.com/m6051259851/p2/">下一页</A> </DIV></DIV> 如何利用代码来实现,将上述数组中所有的文章信息全部获取呢?
|
||||
-- 作者:大红袍 -- 发布时间:2016/5/4 10:02:00 -- Dim web As new System.Windows.Forms.WebBrowser Dim pg = web.Document.GetElementById("pagebar") |
||||
-- 作者:大红袍 -- 发布时间:2016/5/4 10:03:00 -- 请自己去学习一下如何获取html里面元素的内容。 |
||||
-- 作者:李孝春 -- 发布时间:2016/5/11 16:51:00 -- 回复:(大红袍) 请自己去学习一下如何获取html... 正则表达式弄了许久都没有搞定 越搞越乱咯 下面是网页源代码: <div class="pin"> <a class="close" href="#" group_id="6230520256486441473" title="不感兴趣"></a> <div class="pin-content" data-type="context" group_id="6230520256486441473"> <table width="680"> <tr> <td height="35"> <h3> <a href="http://toutiao.com/item/6283004838989005313/" target="_blank" ga_event="source_url" ga_label="index_feed" >关注|“司法考试”将更名为“法律职业资格考试”考试难度有所上升</a></h3> </td> </tr> <tr> <td> <div style="float:left; max-height:180px; overflow:hidden; margin-right:10px" class="img_bg shadow_img"> <a target="_blank" href="http://toutiao.com/item/6283004838989005313/" ga_event="source_url" ga_label="index_feed"><img src="http://p2.pstatp.com/list/5c40008f9d353ab6875" width="202" /> </a> </div> <div class="text">2016-05-09 贵州检察来源 | 山东省人民检察院微信公众号“司法考试”更名为“法律职业资格考试”的法治意义“司法考试”将更名为“法律职业资格考试” 标志着法律职业共同体的真正形成一、“司法考试制度”到“国家统一法律职业资格考试制度”,标志法律职业共同体将真正形成中共中央办</div> <div class="clearfix"></div> </td> </tr> <tr> <td> <table class="item_info" width="100%"> <tr> <td>阅读: 194</td> <td>评论: 0</td> <td align="right">2016-05-10 16:46</td> </tr> </table> </td> </tr> </table> </div>
</div> 经过在命令窗口中运行如下: Dim web As new System.Windows.Forms.WebBrowser web.Navigate("http://toutiao.com/m6051259851/") Do Until web.ReadyState = 4 Application.DoEvents Loop Dim bt As System.Windows.Forms.HtmlElement bt = web.Document.GetElementByID("keywords") \'今日头条单位标题 Output.Show(bt.innerText & " " & bt.GetAttribute("content")) Dim jj As System.Windows.Forms.HtmlElement jj = web.Document.GetElementByID("description") \'今日头条单位简介 Output.Show(jj.innerText & " " & jj.GetAttribute("content")) Dim bt1 As System.Windows.Forms.HtmlElement bt1 = web.Document.GetElementByID("pin-content") \' Output.Show(bt1.innerText & " " & bt1.GetAttribute("href")) 这个部分的代码不起作用 是不是ID元素错误啦 运行报错 求解决错误 并获取下列红色框中数据 |
||||
-- 作者:大红袍 -- 发布时间:2016/5/11 17:25:00 -- 参考
Dim web As new System.Windows.Forms.WebBrowser Dim divs = web.Document.GetElementById("ColumnContainer") |
||||
-- 作者:李孝春 -- 发布时间:2016/5/11 18:57:00 -- 回复:(大红袍)参考?Dim web As new Syste... 试问又如何实现7个页面的全部数据读取? [此贴子已经被作者于2016/5/11 19:15:39编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/5/11 19:29:00 -- 看2楼,结合5楼,换一下地址就行啊。 |
||||
-- 作者:李孝春 -- 发布时间:2016/5/11 19:45:00 -- 回复:(大红袍)看2楼,结合5楼,换一下地址就行啊。...
Dim web As new System.Windows.Forms.WebBrowser web.ScriptErrorsSuppressed = True \'Dim ad As WinForm.ComboBox = e.Form.Controls("ComboBox2") \'web.Navigate(ad.Value) web.Navigate("http://toutiao.com/m6051259851/") Do Until web.ReadyState = 4 Application.DoEvents Loop DataTables("文章列表").DataRows.Clear Dim bt As System.Windows.Forms.HtmlElement bt = web.Document.GetElementByID("keywords") \'今日头条单位标题 Output.Show(bt.innerText & " " & bt.GetAttribute("content")) Dim divs = web.Document.GetElementById("ColumnContainer") For Each div As object In divs.GetElementsByTagName("div") If div.GetAttribute("ClassName") = "pin" Then Dim tbs = div.GetElementsByTagName("table") Dim trs = tbs(0).GetElementsByTagName("tr") output.show(trs(0).GetElementsByTagName("h3")(0).Innertext) \'文章标题 output.show(trs(1).GetElementsByTagName("div")(1).Innertext) \'正文 Dim tds = trs(2).GetElementsByTagName("td") output.show(tds(1).innertext) \'阅读数 output.show(tds(2).innertext) \'评论数 output.show(tds(3).innertext) \'发布时间 output.show("------") Dim dr As DataRow = DataTables("文章列表").AddNew() Dim 阅读数 As String = tds(1).innertext Dim Parts() As String = 阅读数.Split(":") Dim 评论数 As String = tds(2).innertext Dim Parts1() As String = 评论数.Split(":") dr("单位") = bt.innerText & " " & bt.GetAttribute("content") dr("文章标题") = trs(0).GetElementsByTagName("h3")(0).Innertext dr("发布时间") = tds(3).innertext dr("阅读数") = Parts(1) dr("评论数") = Parts1(1) dr("正文") = trs(1).GetElementsByTagName("div")(1).Innertext \'dr("网址") = \'Next End If Next 现在已经可以实现第一页的数据对应的填入到文章列表这个表中,但是第二页、第三页、第四页怎么操作呢? 我想实现的是 就在这个代码中实现1到N页的所有列表数据的获取 另外:当前文章对应的网址部分的值 还得麻烦大红袍老师指导一下 怎么获取 谢谢!
[此贴子已经被作者于2016/5/11 19:47:52编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2016/5/11 20:00:00 -- Dim web As new System.Windows.Forms.WebBrowser Dim pg = web.Document.GetElementById("pagebar").GetElementsByTagName("a") DataTables("文章列表").DataRows.Clear For i As Integer = 1 To mpg |
||||
-- 作者:李孝春 -- 发布时间:2016/5/11 21:06:00 -- 回复:(大红袍)Dim web As new System.Windows.Form... 好奇怪的问题 居然一样的操作 有三都 福泉 平塘的不能读取数据 错误如下 三个都一样 [此贴子已经被作者于2016/5/11 21:09:22编辑过]
|