以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于渲染类的网站要用什么方法爬取数据。  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=154092)

--  作者:ap9709130
--  发布时间:2020/9/3 12:21:00
--  关于渲染类的网站要用什么方法爬取数据。
 如题。

     老师现在很多网站都是渲染数据的,这类的网站有什么好方法爬数据吗?

比如:http://app1.nmpa.gov.cn/data_nmpa/face3/base.jsp?tableId=68&tableName=TABLE68&title=%B9%FA%B2%FA%CC%D8%CA%E2%D3%C3%CD%BE%BB%AF%D7%B1%C6%B7&bcId=152904508268669766289794835880&CbSlDlH0=qAqfqarg8ofg8ofg8id8ra.vTA45PQPDxQmnEeHqGtqqqoG


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


有没有办法把这 4万多的数据弄出来呢?多谢!

--  作者:ap9709130
--  发布时间:2020/9/6 22:17:00
--  
 老师

   经过这几天的研究,基本把这个网站的内容全部都能弄下来了.但现在的问题就是卡在翻页上面,麻烦老师看看我的代码,明明翻页成功的了,但为什么网页的信息还是上一页的? 代码如下:

Dim url As String = "http://app1.nmpa.gov.cn/data_nmpa/face3/base.jsp?tableId=68&tableName=TABLE68&title=%E5%9B%BD%E4%BA%A7%E5%8C%96%E5%A6%86%E5%93%81&bcId=138009396676753955941050804482&CbSlDlH0=qAkIkGkuZdHuZdHuZ6RIDC.kpMdjYOsCXVXeBm1Aq69qqHW"
Dim web As New System.Windows.Forms.WebBrowser
web.ScriptErrorsSuppressed = True
web.Navigate(url)
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("content").GetElementsByTagName("a").count > 0
    Application.DoEvents
Loop
Dim ys As Integer = web.Document.GetElementById("goInt").GetAttribute("value")  \'第一页

For i As Integer = 0 To web.Document.GetElementById("content").GetElementsByTagName("a").count - 1
    If web.Document.GetElementById("content").GetElementsByTagName("a")(i).innerText IsNot Nothing Then
        Dim zd As String = web.Document.GetElementById("content").GetElementsByTagName("a")(i).innerText
        zd = zd.trim()
        Output.show(zd) \'需要的内容
    End If
Next


web.Document.GetElementById("goInt").SetAttribute("Value",2) \'设成第二页
web.Document.GetElementById("content").GetElementsByTagName("table")(4).GetElementsByTagName("tr")(0).GetElementsByTagName("td")(6).InvokeMember("Click") \'点击去指定的页
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("goInt").GetAttribute("value") <> ys
    Output.show(web.Document.GetElementsByTagName("a")(73).innerText)
    Output.show(web.Document.GetElementById("goInt").GetAttribute("value"))
    Application.DoEvents
Loop
Output.show(web.Document.GetElementById("goInt").GetAttribute("value")) \'看当前的页数

For i As Integer = 0 To web.Document.GetElementById("content").GetElementsByTagName("a").count - 1
    If web.Document.GetElementById("content").GetElementsByTagName("a")(i).innerText IsNot Nothing Then
        Dim zd As String = web.Document.GetElementById("content").GetElementsByTagName("a")(i).innerText
        zd = zd.trim()
        Output.show(zd) \'需要的内容
    End If
Next

我output.show 出的页数 也是第2页,说明翻页成功了,但为什么两次网页上的内容是一样的? 请老师教一下 要怎么才能实现真的翻页? 多谢!

--  作者:有点蓝
--  发布时间:2020/9/6 22:23:00
--  
这里不提供网页的数据分析和抓取技术支持,请自行学习解决
--  作者:菲舍尔
--  发布时间:2020/9/7 10:01:00
--  
不能直接设网页元素的属性,要去执行一次下一页按钮的代码,网页才会更新
--  作者:chen37280600
--  发布时间:2020/9/7 11:06:00
--  
推荐使用Python的Scrapy技术去做爬虫。术业有专攻,竹篮别干打水活,事倍功半