Python用正则表达式实现爬取古诗文网站信息

2022-04-16 04:06:33
目录
分析古诗文网站1. 用正则表达式获取总页数2. 提取诗的标题3. 提取作者和朝代4. 提取诗的内容整理代码完整源代码总结

分析古诗文网站

下图1展示了古诗文网站—》诗文 栏目的首页数据。该栏目的地址是:https://so.gushiwen.cn/shiwens/

Python用正则表达式实现爬取古诗文网站信息

第二页的地址是:https://so.gushiwen.cn/shiwens/default.aspx?page=2&tstr=&astr=&cstr=&xstr= 。依次类推第n页的地址就是page=n。其他不变。

1. 用正则表达式获取总页数

Python用正则表达式实现爬取古诗文网站信息

匹配的正则表达式是r'<div class="pagesright">.*?<span .*?>(.*?)</span>'

首先,r修饰的字符串是原生字符串,首先匹配到<div class="pagesright"> 标签,然后再通过.*?匹配到里面的里面的<a>标签<span>标签等。这里. 可以匹配到任意的一个字符(换行符除外),* 号可以匹配0或者任意多个字符。? 号表示只能匹配到1个或者0个。这里加上?号是为了使用非贪婪模式。 <span .*?> 通过匹配到存放总页数的<span>标签。在标签里指定.*? (.*?) 加上() 可以指定不同的分组,这里我们只需要获取页数所以就单独添加一个分组。

所以,最终的代码是:

 def get_total_pages():    resp = requests.get(first_url)    # 获取总页数    ret = re.findall(r'<div class="pagesright">.*?<span .*?>(.*?)</span>', resp.text, re.DOTALL)    result = re.search('d+', ret[0])    for page_num in range(int(result.group())):        url = 'https://so.gushiwen.cn/shiwens/default.aspx?page=' + str(page_num)        parse_page(url)

"author":'张三', 'dynasty':'唐朝', 'content':'xxxxxx' } ] """"""zip 函数a=['name','age']b=['张三',18]c=zip(a,b)c=[ ('name','张三'), ('age',18)]"""if __name__ == '__main__': get_total_pages()

最终的运行结果是:

Python用正则表达式实现爬取古诗文网站信息

总结

本文以古诗文网为例演示了如何通过正则表达式来爬取网站数据。

以上就是python用正则表达式实现爬取古诗文网站信息的详细内容,更多关于Python正则表达式爬取网站信息的资料请关注我们其它相关文章!