观察网页
网址: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必备开发工具

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

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

五、Python练习题
检查学习结果。

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

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

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


被折叠的 条评论
为什么被折叠?



