c爬虫抓取网页数据(网络爬虫有什么用呢?如何学习更多Golang语言? )
优采云 发布时间: 2021-10-13 04:24c爬虫抓取网页数据(网络爬虫有什么用呢?如何学习更多Golang语言?
)
安利
如果想了解更多Golang语言,请关注我的公众号。我会第一时间发送文章到公众号,第一时间拿到学习资料。你想学的,我这里都有!!!
添加方法:微信搜索:Golang DreamWorks,或直接扫描下方二维码:
前言
大家好,我是阿松,这是我的第四篇文章原创文章。在这篇文章中,我将介绍网络爬虫系列教程,使用GO和python实现最简单的爬虫---爬虫小说。其实这篇文章就是教大家如何利用妓女。在这个网站的广告环境中,我们想要单纯的看小说已经成了一个难题,于是我们可以利用爬虫技术,爬下小说,不用看烦人的广告。话不多说,全开...
什么是爬虫
对于这类问题,我们可以直接上百度百科看介绍。网络爬虫(也称为网络蜘蛛、网络机器人,在 FOAF 社区中,更常见的是网络追逐者)是一种从万维网上抓取信息的自动程序或脚本。其他不太常用的名称是蚂蚁、自动索引、模拟器或蠕虫。看看百度百科介绍的多好,多好理解。
网络爬虫有什么用?网络爬虫是大数据行业数据采集的核心工具。如果没有网络爬虫,日夜自动抓取互联网上的免费数据,而且智能化程度高,那些大数据相关的公司可能不到四分之三。目前的爬虫基本上都是围绕网页进行的,所以我们的爬虫是根据网页地址(URL),也就是我们在浏览器中输入的网站链接来抓取网页的内容。比如我们经常使用百度:,这是一个网址。URL的专业名称是Uniform Resource Locator,格式如下:
协议/主机名[:端口]/路径/[;参数][?查询]#fragment
URL的格式主要由前三部分组成:
所以有了URL,我们就可以到指定的位置去获取我们想要的数据信息了。有了数据,我们就需要对数据进行分析,所以爬虫还有一个必备技能:审查元素。
我们可以在浏览器中查看我们浏览的每一个网页的源代码,也就是HTML。这些 HTML 决定了 网站 的原创外观。HTML的具体使用这里就不介绍了。我想学习的网络资源有很多。比如我们在使用Chrome浏览器的时候,右击查看谷歌主页(其他浏览器不同,这里不介绍),右侧会出现很多代码,这些代码叫做HTML。
浏览器是作为客户端从服务器获取信息,然后解析信息展示给我们。所以我们可以基于HTML来分析网页的内容。好了,基本的基础知识已经知道了,现在就开始我们的练习吧!!!
爬虫示例1. 爬虫网站 小说介绍
在这里的例子中,我们下载文本内容,也就是下载一本小说。小说网站,我们的新笔曲歌。关联:。
这个网站只支持在线浏览,不支持小说打包下载,所以我们可以利用我们的爬虫技术下载小说,解决本地无法阅读小说的问题。因为不看小说,直接上小说排行榜,选了第一名,《三国修行》。名字很吸引人!!!!
2. 相关技术介绍
本教程使用两种语言进行开发,即Golang和Python。对于Golang,我们使用网站内置的HTTP库来获取和google自己的库x/net/html进行网页数据分析。在Python中,我们使用requests库进行网页获取,使用BeautifulSoup进行网页数据分析。
2.1 /x/net/html
x/net/html 是一个由 Google 维护的库。它主要帮助我们解析网页数据。我们只需要导入 /x/net/html 包。使用方法很简单,这里就不做具体介绍了,大家可以去GO Bible:#Parse
学习了,里面有例子,简单易懂。
2.2 美人汤
BeautifulSoup是python的第三方库,主要帮助我们解析网页数据。如果我们要使用这个工具,我们需要提前安装它。在cmd中,我们使用pip命令进行安装,命令如下:
pip 安装 beautifulsoup4
安装完成后,我们还需要安装lxml,这是解析HTML所需的一个依赖:
pip 安装 lxml
这个就可以用了,具体的学习教程可以去官方中文教程:
2.3 个请求
requests库非常强大,我们可以使用requests库进行网络爬虫。requests 库是第三方库,需要我们自己安装。安装很简单,直接使用pip命令安装即可:
pip 安装请求
requests库的github地址:
具体学习可以通过demo来完成。
3. 爬虫步骤
总共分为三个步骤:
4. 开始练习
评论:
我已经将我的整个项目发布到了我的 github 上。Golang代码GitHub地址如下:
Python代码Github地址如下:
4.1 获取网页
我们严格按照步骤操作。第一步,我们首先获取网页数据。因为要获取小说的整章,我们先查看小说目录,查看其网页源码,如下:
网页的解析在下一节解释。我们先获取目录页面,再获取文章页面,这样章节标题和内容对应起来。小说的第一章是这样的:
知道这两个网页的地址,我们就可以得到网页了。
Golang 可以使用标准库 net/http 来获取网页。示例如下:
resp,err := http.Get(target)
if err!=nil{
fmt.Println("get err http",err)
return err
}
直接调用Get方法,目标就是要获取的网页的URL。
Python可以使用requests库来获取网页,示例如下:
req = requests.get(url=target)
req.encoding = 'utf-8'
html = req.text
直接调用get方法就行了,目标是URL,req.tex表示可以把获取到的网站的内容打印出来看更清楚。编码方式设置为utf-8。这次爬取的网站是utf-8编码,不需要转换。如果抓取到的网站是GBK编码的,需要进行编码转换。
4.2 解析网页
获取到网页后,我们将开始解析网页。对于 Golang,我们使用 x/net/html 库,并使用 go get 命令获取第三方库。代码示例如下:
doc,err := html.Parse(resp.Body)
if err != nil{
fmt.Println("html parse err",err)
return err
}
parseList(doc)
直接调用 Parse 方法,将网页数据放入其中,将解析树的根(文档元素)作为 *Node 返回,然后我们可以按照深度优先的顺序处理每个节点标签。
我们首先分析文章目录,提取文章内容对应的文章标题和URL参数。具体分析,我们需要查看部分网页的源码如下:
我们可以看到文章title都在a标签下,href属性存放的是URL参数。,而且都属于div标签,id等于list,这样我们就可以定位到位置了。所以基于这个特征,我们可以进行分析和提取。Golang语言代码如下:
<p>//找到文章列表
func parseList(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "div"{
for _,a := range n.Attr{
if a.Key == "id" && a.Val == "list"{
listFind = true
parseTitle(n)
break
}
}
}
if !listFind{
for c := n.FirstChild;c!=nil;c=c.NextSibling{
parseList(c)
}
}
}
//获取文章头部
func parseTitle(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "a"{
for _, a := range n.Attr {
if a.Key == "href"{
//获取文章title
for c:=n.FirstChild;c!=nil;c=c.NextSibling{
buf.WriteString(c.Data+ "\n")
}
url := a.Val
target := server + url // 得到 文章url
everyChapter(target)
num--
}
}
}
if num