Foxtable(狐表)用户栏目专家坐堂 → 【求助】如何获取今日头条中的所有页面的网页代码,然后读取文章标题、阅读数、评论数、发布时间到对应的表格中保存


  共有3392人关注过本帖树形打印复制链接

主题:【求助】如何获取今日头条中的所有页面的网页代码,然后读取文章标题、阅读数、评论数、发布时间到对应的表格中保存

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【求助】如何获取今日头条中的所有页面的网页代码,然后读取文章标题、阅读数、评论数、发布时间到对应的表格中保存  发帖心情 Post By: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>
如何利用代码来实现,将上述数组中所有的文章信息全部获取呢?

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍) 请自己去学习一下如何获取html...  发帖心情 Post By:2016/5/11 16:51:00 [显示全部帖子]

正则表达式弄了许久都没有搞定 越搞越乱咯
 下面是网页源代码:

<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元素错误啦


运行报错


图片点击可在新窗口打开查看此主题相关图片如下:30c2.tm.png
图片点击可在新窗口打开查看


求解决错误

并获取下列红色框中数据


图片点击可在新窗口打开查看此主题相关图片如下:c15f.tm.png
图片点击可在新窗口打开查看




 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)参考?Dim web As new Syste...  发帖心情 Post By:2016/5/11 18:57:00 [显示全部帖子]

试问又如何实现7个页面的全部数据读取?


[此贴子已经被作者于2016/5/11 19:15:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)看2楼,结合5楼,换一下地址就行啊。...  发帖心情 Post By:2016/5/11 19:45:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


在按钮事件代码中写入如下代码:
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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)Dim web As new System.Windows.Form...  发帖心情 Post By:2016/5/11 21:06:00 [显示全部帖子]

好奇怪的问题 居然一样的操作 有三都 福泉 平塘的不能读取数据  错误如下 三个都一样
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


图片点击可在新窗口打开查看此主题相关图片如下:89cb.tm.png
图片点击可在新窗口打开查看
 大红袍老师 求教
[此贴子已经被作者于2016/5/11 21:09:22编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)Dim pg = web.Document.GetElementBy...  发帖心情 Post By:2016/5/11 21:44:00 [显示全部帖子]

不知道啥搞的 难道是程序不稳定么?刚刚可以获取的单位名称,现在居然是空值了

Dim bt As System.Windows.Forms.HtmlElement
            bt = web.Document.GetElementByID("keywords")   '今日头条单位标题
            Output.Show(bt.innerText & " " & bt.GetAttribute("content"))
            dr("单位") = bt.innerText & " " & bt.GetAttribute("content")
            msgbox(bt.innerText & " " & bt.GetAttribute("content"))

上列代码居然不读值了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

求教 是否应该有其他办法变通呢?

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)无语,读取不到,就是没有值啊。  发帖心情 Post By:2016/5/12 9:21:00 [显示全部帖子]

但是不对啊 之前都有值的啊 唉  还是那方法思路有问题  大红袍老师 可以变通实现不呢?

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)代码,没有问题。 获取不了...  发帖心情 Post By:2016/5/12 10:01:00 [显示全部帖子]

有值的呢

图片点击可在新窗口打开查看此主题相关图片如下:f25b.tm.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)有只就能获取啊。自己测试。  发帖心情 Post By:2016/5/12 10:44:00 [显示全部帖子]

谢谢 经过调整代码顺序 问题解决了  再次感谢大红袍老师的指导

 回到顶部