python 简单抓取所有古诗词 按分类排列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 简单抓取所有古诗词 按分类排列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2280字,纯文字阅读大概需要4分钟。
内容图文
![python 简单抓取所有古诗词 按分类排列](/upload/InfoBanner/zyjiaocheng/625/7c53dcb3fde94281babf693a5d738694.jpg)
这代码一年前,刚学python写的,现在依然能用,最先发布与吾爱破解论坛。
from bs4 import BeautifulSoup import requests import json import re import time def get_one_page(url): try: headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" } response = requests.get(url, headers=headers) if response.status_code == 200: response.encoding = "UTF-8" return response.text except requests.ConnectionError: return None def choice_jiekou(): # 抓取每个风格的地址 URL = "https://www.gushiwen.org/shiju/xiejing.aspx" html = requests.get(URL).text soup = BeautifulSoup(html, 'lxml') gushi_1 = soup.find_all("div", {"class":"cont"}) raws = [] for gushi in gushi_1: gushi = gushi.findAll(href=re.compile("shiju")) for jiekou in gushi: raws.append(jiekou['href']) return raws def parse_one_page(html): #每个风格的诗句 soup = BeautifulSoup(html, 'lxml') gushi_1 = soup.find_all("div", {"class": "cont"}) rows = [] row = [] raw = [] gushibiaoti_1 = soup.find_all("div", {"class": "title"}) for gushibiaoti in gushibiaoti_1: #找到标题 for biaoti1 in gushibiaoti.stripped_strings: biaoti = repr(biaoti1) row.append(biaoti) for gushi2 in gushi_1: #找到每个诗句第几句 gushi2 = gushi2.findAll(style='float:left;') for jiekou in gushi2: raw.append(jiekou.string) for gushi in gushi_1:#找到诗句 gushici = gushi.find_all('a') gushici_1 = gushici[0].string gushici_2 = gushici[1].string gushi1 = gushici_1 + "————" + gushici_2 rows.append(gushi1) rows.pop() rows.pop(0)#去除第一项 row.pop()#去除最后一项 c = [(raw[i] + rows[i]) for i in range(0, len(raw))] e = [' '] d = row + e + c + e return d jiekou = choice_jiekou() # 每个接口地址提取出来 赋值给jiekou changdu = len(jiekou) # 计算多少条接口地址 def dizhi(): # 把地址罗列出来 URL = ['https://www.gushiwen.org/'+x for x in jiekou] # 把接口合成地址 dizhi = tuple(URL) #列表 转元组完美。。 return dizhi dizhi1 = dizhi() def writeInfomation(content):#写到文本 with open("gushi3.txt", "a+", encoding='utf-8') as f: #定义格式 utf-8 f.write(json.dumps(content, ensure_ascii=False) + "\n") def main(offset): url = dizhi1[offset]# 每隔1秒解析一个地址 html = get_one_page(url) for item in parse_one_page(html): print(item) writeInfomation(item) if __name__ == '__main__': for i in range(changdu): main(offset=i) time.sleep(1)# 每隔一秒
放入库就可以用。
内容总结
以上是互联网集市为您收集整理的python 简单抓取所有古诗词 按分类排列全部内容,希望文章能够帮你解决python 简单抓取所有古诗词 按分类排列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。