1.打开中华诗词网,随便找个诗人,让后打开按F12,找到我们要爬取的信息。例如:李白

python之爬取中华诗词网

图中的a标签的href属性就是我们要找的,它可以跳转到下图,按F12,找到我们想要爬取的信息,包括标题,作者,诗的内容。

python之爬取中华诗词网

通过比较每首诗的标题,作者,诗的内容,你会发现他们的标签和结构是一样的,这样就有利于我们把李白的全部诗都给爬下来。

做好这些准备后我们就可以开始爬李白的诗了。

2.开始爬取李白全部的诗

1)先引入爬虫过程中需要用到的一些库

python之爬取中华诗词网

2)先获取到第一页所有诗的链接和下一页的链接

python之爬取中华诗词网

3).让程序自动创建一个文件夹以作者的名字+‘的诗’,文件夹中创建一个txt文档,以是的标题命名,并将内容写入其中。
python之爬取中华诗词网

4).通过一个保存所有爬到的是的链接。

python之爬取中华诗词网

5).对上面获得到的链接逐个进行爬取数据。

python之爬取中华诗词网

6).接下来直接调用getAllPoetry(url),传入你想要爬取诗人的url就可以获取到他所有的诗了。例如,李白

python之爬取中华诗词网

python之爬取中华诗词网

python之爬取中华诗词网

python之爬取中华诗词网

不过这样子爬挺麻烦的,你要怕一个诗人的所有诗还要自己先去找他的链接,所以我又想到了一种比较简便的方法。只要你输入

作者的名字就能够,爬到他所有的诗了。

2.通过诗人的名字直接爬取他所有的诗

1)分析

python之爬取中华诗词网

python之爬取中华诗词网

python之爬取中华诗词网

python之爬取中华诗词网

python之爬取中华诗词网

得出结论:每个诗人前面的编号就是url中不同的地方,我们只要进行处理一下,就能拿到所有诗人的url。

2)在刚刚的代码后面继续写

python之爬取中华诗词网

这个就是我们要获取的id。

接下来,就来获取id,并保存nextUrl方便一直往下一页爬。

python之爬取中华诗词网

再用函数把获取到的nextUrl进行处理,把所有的作者和id都保存在同一个字典里。

python之爬取中华诗词网


python之爬取中华诗词网

最后,再把函数组合起来就能用了。

使用时,你只要调用searchPoetry()在括号中输入你要查询的诗人的名字,就能够爬取到所有的有关作者的诗词了。

不过从id为62以后就乱了,后来我找了原因。如下

python之爬取中华诗词网

python之爬取中华诗词网

看见没有id为63的,他的url里面是64,相差了1,后面的还有一些相差2,3,4,5,6的,寻不到规律,所以就先到这里。

相关文章: