目录
分析古诗文网站1. 用正则表达式获取总页数2. 提取诗的标题3. 提取作者和朝代4. 提取诗的内容整理代码完整源代码总结分析古诗文网站
下图1展示了古诗文网站—》诗文 栏目的首页数据。该栏目的地址是:https://so.gushiwen.cn/shiwens/

第二页的地址是:https://so.gushiwen.cn/shiwens/default.aspx?page=2&tstr=&astr=&cstr=&xstr= 。依次类推第n页的地址就是page=n。其他不变。
1. 用正则表达式获取总页数

匹配的正则表达式是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正则表达式爬取网站信息的资料请关注我们其它相关文章!









