版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1334366
设计院OA上有维护得比较好的法规库,3000多条,我用了30分钟一页页拷贝到excel中。一共1500页啊。
为啥不用代码抓取呢?因为开始连用chrome登陆访问这个库都打不开,只支持ie。用fiddler获得库页面地址,拷贝到chrome中,也是直接跳到登陆页。今天再努力,chrome登陆,然后点击:进入系统——会打开一个独立的窗口,这个窗口似乎不支持地址输入,没关系,在这个窗口中——公共信息——点下拉——技术标准,会打开一个新窗口,库就出现了。
此时,再回到chrome任何标签页,输入地址,也可以打开了这个库了。不知为何这么复杂。
仅仅记录一下。
下面进入正题,用代码直接抓取库。这样用一个循环可以把1500页一次性抓下来了。
用到三个知识点:request库是构造http访问信息头的,这里将登陆的cookie带上,才能模拟登陆了;mahonia是将页面gb的编码转成utf-8,否则是乱码;goquery大名鼎鼎的获取html中所需要的信息,过滤,定位。
码:
package main
import (
"code.google.com/p/mahonia"
"fmt"
"github.com/PuerkitoBio/goquery"
"github.com/mozillazg/request"
"log"
"net/http"
)
func main() {
c := new(http.Client)
req := request.NewRequest(c)
req.Cookies = map[string]string{
"JSESSIONID": "35A39472B18BC213B6288F3B6BAA3ABC", //76751D487E4931BA53EE7EF51760E88F
"stylePath": "",
}
resp, _ := req.Get("http://gpdioa.gpdiwe.com/ProjManager/flfgv08070300009.jsp?08070300003_page=1
&flf81024flfgl01=&flf81024flfgl01=%BC%BC%CA%F5%B1%EA%D7%BC")
defer resp.Body.Close() // Don't forget close the response body
dec := mahonia.NewDecoder("GB2312") //定义转换乱码
// fmt.Println(dec.ConvertString(j)) //转成utf-8
rd := dec.NewReader(resp.Body)
doc, err := goquery.NewDocumentFromReader(rd)
if err != nil {
log.Fatal(err)
}
// Find the review items
doc.Find("tr.trclass").Each(func(i int, s *goquery.Selection) {
// For each item found, get the band and title
band := s.Find("td").Text()
// title := s.Find("i").Text()
fmt.Printf("%d: 序号、编号、名称、分类……%s\n", i, band) //, title
})
}
输出结果:
0: 序号、编号、名称、分类……1 水利水电工程建设程序及法规汇编(第三版)政策法规技术标准2016-08-012016-08-01
1: 序号、编号、名称、分类……215S909《消防给水及消火栓系统技术规范》图示其它技术标准
2: 序号、编号、名称、分类……314S104二次供水消毒设备选用及安装其它技术标准
3: 序号、编号、名称、分类……415SS510绿地灌溉与体育场地给水排水设施其它技术标准
4: 序号、编号、名称、分类……5GA 180轻便消防水龙其它技术标准
5: 序号、编号、名称、分类……614X505-1火灾自动报警系统设计规范图示其它技术标准
6: 序号、编号、名称、分类……7GB 50594-2010水功能区划分标准国家标准技术标准
7: 序号、编号、名称、分类……8国务院令(2003)第393号建设工程安全生产管理条例政策法规技术标准
8: 序号、编号、名称、分类……9SL 721-2015水利水电工程施工安全管理导则行业标准技术标准2015-07-312015-10-31
9: 序号、编号、名称、分类……10JGJ 107-2016钢筋机械连接技术规程行业标准技术标准
10: 序号、编号、名称、分类……11SL 677-2014水工混凝土施工规范行业标准技术标准
11: 序号、编号、名称、分类……12 中华人民共和国航道法国家标准技术标准2016-07-022016-07-02
12: 序号、编号、名称、分类……13 中华人民共和国职业病防治法政策法规技术标准2016-07-022016-07-02
13: 序号、编号、名称、分类……14主席令74号中华人民共和国水法政策法规技术标准2016-07-022016-07-02
14: 序号、编号、名称、分类……15 中华人民共和国节约能源法政策法规技术标准2016-07-022016-07-02
15: 序号、编号、名称、分类……16SL/Z 738-2016水生态文明城市建设评价导则行业标准技术标准2016-04-112016-07-11
16: 序号、编号、名称、分类……17SL 734-2016水利工程质量检测技术规程行业标准技术标准2016-06-072016-09-07
17: 序号、编号、名称、分类……18SL 725-2016水利水电工程安全监测设计规范行业标准技术标准2016-05-232016-08-23
18: 序号、编号、名称、分类……19GB 51079-2016城市防洪规划规定国家标准技术标准 2017-02-01
19: 序号、编号、名称、分类……20CJ 343-2010污水排入城市下水道水质标准行业标准技术标准2010-07-292011-01-01CJ 3082-1999
原始页面: