请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

4回答

刘老先生 2020-02-06 23:27:20

我稍微改了一下能正确的爬出来了,确实他们的网站进行了一些改版,我把整个网页当成了string就可以爬到了

时间是2020年2月6日有效

func main() {
  resp, err := http.Get("http://www.zhenai.com/zhenghun")
  if err!=nil{
     panic(err)
  }

  defer resp.Body.Close()
  //e:=determinEncoding(resp.Body)
  //utf8reader:=transform.NewReader(resp.Body,e.NewDecoder())
  if resp.StatusCode!=http.StatusOK{
     fmt.Println("err")
     return
  }
     all,err:=ioutil.ReadAll(resp.Body)
     if err!=nil{
        panic(err)
     }
     getmatch(string(all))
     //fmt.Printf("%s\n",all)
}

func getmatch(contents string){
  re:=regexp.MustCompile(`<a href="(http://www.zhenai.com/zhenghun/[a-z0-9]*)"[^>]*>([^<]*)</a>`)
matches:=re.FindAllStringSubmatch(contents,-1)
for _,match:= range matches{
  fmt.Println(match[1],match[2])
}
fmt.Println(len(matches))}

1 回复 有任何疑惑可以回复我~
兜兜转转便是空 2020-02-06 23:43:55

很多信息都可以扒他的json,扒他的json解析可以拿到很多数据

var jsonRe = regexp.MustCompile(`STATE__=(.*)+;\(function`)

用这个能扒到它的json

0 回复 有任何疑惑可以回复我~
  • 我试了,你这个也是可以的,不过有些时候json格式的数据还是需要分析的,很多时候json里面的数据都是按需显示的,
    回复 有任何疑惑可以回复我~ 2020-02-07 00:12:44
  • 现在网站改版后,没法再有序的拿到对应的值,拿到的json虽然也要处理,但是对应的信息是比较多的,处理起来也不算麻烦
    回复 有任何疑惑可以回复我~ 2020-02-07 00:20:35
刘老先生 2020-02-06 23:35:36

虽然他把网页做了改版,但是我在通过http请求的时候我发现我返回的是内容完全是没有格式的,很类似字符串然后我就发http返回的内容直接格式化成了字符串然后通过字符串的方式匹配成功了,通过findall 这种方式如果不是字符串匹配不成功,

0 回复 有任何疑惑可以回复我~
ccmouse 2019-01-13 21:31:21

已在另一个问题中解答

0 回复 有任何疑惑可以回复我~
  • 哪个问题,请发连接
    回复 有任何疑惑可以回复我~ 2020-01-06 14:01:52
  • 抱歉当时原题主问了好几个类似问题,所以我就这么回了,现在看到由于系统关系,似乎很难搜索到原问题。不过没有关系,我当时大致说了一下,但现在,我已经对爬虫本身的内容选择进行了扩充,请参考14-2 爬虫的法律风险和14-3 新爬虫的选择
    回复 有任何疑惑可以回复我~ 2020-01-06 21:39:56
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信