go-百度贴吧-纵向爬取
百度贴吧纵向爬取
上一个是横向爬取的,这个纵向爬取,具体怎么做的看代码
package main
import (
"fmt"
"io"
"net/http"
"os"
"regexp"
"strconv"
)
func HttpGetDB(url string) (result string, err error) {
resp, err1 := http.Get(url)
if err1 != nil {
err = err1
return
}
defer resp.Body.Close()
buf := make([]byte, 4096)
for {
n, err2 := resp.Body.Read(buf)
if n == 0 {
break
}
if err2 != nil && err2 != io.EOF {
err = err2
return
}
result += string(buf[:n])
}
return
}
func Save2file(idx int, fileName [][]string) {
path := "第" + strconv.Itoa(idx) + "页" + ".txt"
f, err := os.Create(path)
if err != nil {
fmt.Println("os.Create err", err)
return
}
defer f.Close()
n := len(fileName)
f.WriteString("名称\n")
for i := 0; i < n; i++ {
f.WriteString(fileName[i][1] + "\n")
}
}
func SpiderPageDB(idx int, page chan int) {
// url := "https://movie.douban.com/review/best/?start=" + strconv.Itoa((idx-1)*20)
// url := "https://movie.douban.com/annual/2018?source=navigation#" + strconv.Itoa(idx-1)
// https://movie.douban.com/review/best/?start=20
url := "https://tieba.baidu.com/f?kw=vue&ie=utf-8&pn=" + strconv.Itoa((idx-1)*50)
result, err := HttpGetDB(url)
if err != nil {
fmt.Println("HttpGet2 err", err)
return
}
// fmt.Println("result=", result)
ret := regexp.MustCompile(`<span class="tb_icon_author_rely j_replyer" title="最后回复人:(?s:(.*?))"`)
fileName := ret.FindAllStringSubmatch(result, -1)
// for _, name := range fileName {
// fmt.Println("name", name[1])
// }
Save2file(idx, fileName)
page <- idx
}
func toWork(start, end int) {
fmt.Printf("正在爬取%d到%d页。。。\n", start, end)
page := make(chan int)
for i := start; i <= end; i++ {
go SpiderPageDB(i, page)
}
for i := start; i <= end; i++ {
fmt.Print("第%d页爬取完成\n", <-page)
}
}
func main() {
var start, end int
fmt.Print("请输入起始页(>=1):")
fmt.Scan(&start)
fmt.Print("请输入终止页(>=start):")
fmt.Scan(&end)
toWork(start, end)
}
go-百度贴吧-纵向爬取的更多相关文章
- 百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。
1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0 ...
- 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有 ...
- Java爬取 百度图片Google图片Bing图片
先看看抓取的结果. 8个Java类: Startup.java - main函数 ImageCrawler.java - Crawler基类 BaiduImageCrawler.java - 百度图片 ...
- Scrapy Learning笔记(四)- Scrapy双向爬取
摘要:介绍了使用Scrapy进行双向爬取(对付分类信息网站)的方法. 所谓的双向爬取是指以下这种情况,我要对某个生活分类信息的网站进行数据爬取,譬如要爬取租房信息栏目,我在该栏目的索引页看到如下页面, ...
- Python 爬取 热词并进行分类数据分析-[简单准备] (2020年寒假小目标05)
日期:2020.01.27 博客期:135 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备](本期博客) b.[云图制作+数据导入] ...
- python 爬取全量百度POI
在网上找了很多关于爬取百度POI的文章,但是对“全量”的做法并没有得到最终的解决方案,自己写了一个,但还是不能实现全量POI抓取,能够达到至少50%的信息抓取.注意:这里所指“全量”是能够达到100% ...
- python爬虫—爬取百度百科数据
爬虫框架:开发平台 centos6.7 根据慕课网爬虫教程编写代码 片区百度百科url,标题,内容 分为4个模块:html_downloader.py 下载器 html_outputer.py 爬取数 ...
- Python爬虫爬取百度贴吧的图片
根据输入的贴吧地址,爬取想要该贴吧的图片,保存到本地文件夹,仅供参考: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urllib2i ...
- Python爬虫爬取百度贴吧的帖子
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...
随机推荐
- go语言之切片即动态数组
切片和数组的类型有什么不一样,我们可以打印一下,就可以知道两者的区别了,数组是容量的,所以中括号中有容量,切片的动态数组,是没有容量,这是数组和切片最大的区别 test8_4 := [20] int ...
- 查看Oracle被锁的表以及如何解锁
注意权限问题 1.查看是否有被锁的表: select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,db ...
- Python菜鸟文本处理4种方法
自从认识了python这门语言,所有的事情好像变得容易了,作为小白,逗汁儿今天就为大家总结一下python的文本处理的一些小方法. 话不多说,代码撸起来. python大小写字符互换 在进行大小写互换 ...
- 资深程序员对于Python各个方向的面试经验分享,非常给力!
之前早有前辈们说过,"裸辞一时爽,一直裸辞一直爽",这话一点不假,裸辞你要面临没有收入来源,但是每天眼睁睁看着各种花销不断支出的煎熬,我主要是觉得一边在上家公司工作一边去下家面试可 ...
- Consul作为配置中心,配置Asp.Net Core应用程序
前言 最近项目逐步转向基于.Net Core,目前dotnet core 虽然已出3.0了但还没有特别成熟的框架,要实现微服务,必须要解决配置中心的问题 .不管是不是微服务,节点多了配置文件一个个更改 ...
- Postsql 修改字段长度和类型
以后更改字段长度会重写表,如果表比较大,那么表会加锁,需要很长时间 通过一种方法通过修改pg_attribute.atttypmod字段修改长度,不需要重写表 查询select * from pg_a ...
- 用函数模拟简单的购物车(Python)
""" 购物车功能: a.引导用户输入金额 b.给用户展示所有的商品 c.引导用户输入需要进行的操作[添加 删除 结算购物车 退出] d.引导用户选择商品 e.引导用户输 ...
- windows下redis作为系统服务如何重启
第一种方法: 键入win+R打开运行对话框,键入Services.msc打开windows服务窗口,找到redis服务,先停止该服务,然后再启动 第二种方法: 键入win+R打开运行对话框,键入cmd ...
- 查看oracle表空间内存
查看oracle表空间内存 SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小 ...
- Django3.0 前瞻 支持异步通信
最近两年,Django的版本号提升得特别快,2.0还没有多久,很快就要到3.0了. 让我们先看看官方的路线图和时间表: 版本号 发布日期 停止更新日期 停止维护日期 3.0 2019-12 2020- ...