以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于渲染类的网站要用什么方法爬取数据。 (http://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 有没有办法把这 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技术去做爬虫。术业有专攻,竹篮别干打水活,事倍功半 |