Python入门之爬虫

这里介绍一个简单的爬虫小案例
我们将会爬取某个直播网站上的一些游戏名,观看人数等,网站可以随意,这个可以根据个人的需求而定。

开始之前需要准备的工作有:Python的编译器以及相应的环境库:requests 以及 etree库

配置好相关的环境之后,我们先介绍一下有关xpath的相关知识:
xpath:根据字面意思,单词path,我们可以简单的理解为路径的意思。总的来说,xpath就是我们要爬取的目标的路径,而我们的程序就可以根据这个路径去知道我们所要爬取的内容。插件的安装以及使用在这里就不详细介绍了。

接下来开始介绍我们的主要内容:
首先,爬虫的基本流程是发送请求,获得响应,读取响应对象,对网页进行解码,将网页源码写如本地文件中,然后获取自己想爬取的数据,将其写入到相应的位置

首先定义一个加载页面的函数:这个函数主要实现构建请求体发送请求,获得响应对象读取响应对象

源码:

def loadPage(url):
    '''加载页面'''
    header={"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)"}
    #构建请求体
    req=request.Request(url,headers=header)
    #发送请求,获得响应对象
    response=request.urlopen(req)
    #读取响应对象
    html=response.read()
    return html

其次,我们需要对获取到的网页进行解码,并将网页源码写进我们的本地文件中。
源码:

def writeHtml(html):
    #对网页进行解码
    html=html.decode('utf-8')
    #将网页源码写入本地文件中
    with open('huya.html','w',encoding='utf-8') as f:
        f.write(html)

获得相应的网页后,我们再进一步去获取我们想要的信息。
源码:

def getInfo(html):
    content=etree.HTML(html)
    game_list=content.xpath("//li[@class='game-live-item']/span/span[2]/a/text()")
    room_list=content.xpath("//li[@class='game-live-item']/a[2]/text()")
    hot_list=content.xpath("//li[@class='game-live-item']/span/span[3]/i/text()")
    name_list=content.xpath("//li[@class='game-live-item']/span/span[1]/i/text()")
    for name,game,room,hot in zip(name_list,game_list,room_list,hot_list):
        info='主播名:{}\n游戏名:{}\n房间名:{}\n观看人数:{}\n\n'.format(name,game,room,hot)
        print(info)
        f=open('huya.txt','a+',encoding='utf-8')
        f.write(info)
    f.close()

在getInfo()函数里面,game_list,room_list等信息的获取方式都是使用我们在上面介绍的xpath。例如:xpath("//li[@class=‘game-live-item’]/span/span[2]/a/text()"),就是这个网页里面游戏名的路径。但是不同的网站或者不同的信息对应的xpath值都是不同的,读者在尝试的时候不能一味的用我这上面所写的xpath。

最后,我们爬取小文本的程序代码就完成了,再用一个程序入口来对函数进行调用便可获得响应的效果。

if __name__ == '__main__':
    url='https://www****.com/l'
    html=loadPage(url)
    writeHtml(html)
    getInfo(html)

在程序入口里面,将网页的URL传入函数loadPage(),并对函数writeHtml(),以及函数getInfo()传入相应的参数,最终便可在对应的本地文件找到相应的结果。

这里放上我爬取后所获得的部分数据,实际的数据有很多,就不全部放上去了。然后数据对应的名称,例如:主播名,游戏名等是我自己命名的,也不知道是不是在主播名。望理解!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值