Python获取原神提瓦特编年史信息

本文介绍了如何使用Python的requests和lxml库抓取并解析静态网站原神提瓦特编年史的信息,包括GET请求、使用XPath定位HTML元素以及处理数据输出的方法。

观察网页

网址:https://wiki.biligame.com/ys/%E6%8F%90%E7%93%A6%E7%89%B9%E7%BC%96%E5%B9%B4%E5%8F%B2右击鼠标,检查网页点击network,点击response,搜索关键词”原初”,找到信息列表可以发现该网站为静态网站,并且所有内容都在该网页上。

请求数据

观察标头发现网页请求是GET请求。所以可以使用requests库请求数据。

#导入库   import requests    #用request库请求网页   from  lxml import etree  #进行文件格式解析   url = 'https://wiki.biligame.com/ys/%E6%8F%90%E7%93%A6%E7%89%B9%E7%BC%96%E5%B9%B4%E5%8F%B2'     r = requests.get(url)   print(r)   

输入网址,发现请求成功,因此此处不再伪装请求头

解析数据

在这里,我们使用lxml库中的etree方法将字符串转化为html标签,使用xpath方法来进行元素信息的查找。

首先,右击所要爬取的信息,滑到copy选项,点击copy full Xpath。

我们得到了第一个标题的Xpath路径。

/html/body/div[2]/div[2]/div[4]/div[5]/div/div[6]/div[1]/h5/span[2]   

经观察第一个和最后一个标题的Xpath路径我们可以发现,我们要找的信息储存于html标签下的body标签下第二个div标签下的第二个div标签下的第四个div标签下的第五个div标签下的div标签的第6—15个div标签。

在这6-15个标签中,包含着我们需要爬取的标题标签与内容标签。

在标题的Xpath路径中我们可以发现,在div[6-16]标签下的一些div标签组成了上一路径的标签。而标题则在这一部分div标签之中,内容则在这些div标签下的p标签中。

以第一段内容举例

至此,我们可以利用etree的Xpath方法来爬取标题和内容。

#使用lxml模块中的etree方法将字符串转化为html标签   r = requests.get(url)   tree = etree.HTML(r.text)                   #用xpath定位标签位置   for i in range(6,16):          #用count找出这6-16个div标签下每个所包含的标题div标签个数       length = tree.xpath(f'count(/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/*)')          for j in range(1,int(length)+1):          #爬取编年史标题用text转化为文本           title = tree.xpath(f'/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/div[{j}]/h5/span[2]/text()')          #爬取编年史内容           content = tree.xpath(f'/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/div[{j}]/p//text()')           #content是列表,因此每个句子都是一个元素。不能落下。               for k in range(0,len(content)):                   print(content[k])   

到这里,我们已经将获取标题及内容的代码编写完毕。

输出数据

因为有些标签下只有内容,没有标题,或者是只有标题没有内容。所以在输出时我们要对title以及content进行判定,采用if/else语句进行判断。

    `for j in range(1,int(length)+1):           title = tree.xpath(f'/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/div[{j}]/h5/span[2]/text()')           if title == []:               print("标题:"+"空白")           else:               print("标题:"+title[0])           content = tree.xpath(f'/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/div[{j}]/p//text()')           if content == []:               print("内容:"+"空白")           else:               print("内容:")               for k in range(0,len(content)):                   print(content[k])           print("")`

全套代码及运行结果

代码

import requests   from  lxml import etree    url = 'https://wiki.biligame.com/ys/%E6%8F%90%E7%93%A6%E7%89%B9%E7%BC%96%E5%B9%B4%E5%8F%B2'        r = requests.get(url)   tree = etree.HTML(r.text)      for i in range(6,16):       length = tree.xpath(f'count(/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/*)')       for j in range(1,int(length)+1):           title = tree.xpath(f'/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/div[{j}]/h5/span[2]/text()')           if title == []:               print("标题:"+"空白")           else:               print("标题:"+title[0])           content = tree.xpath(f'/html/body/div[2]/div[2]/div[4]/div[5]/div/div[{i}]/div[{j}]/p//text()')           if content == []:               print("内容:"+"空白")           else:               print("内容:")               for k in range(0,len(content)):                   print(content[k])           print("")   

运行结果

以上就是“Python获取原神提瓦特编年史信息”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值