import requests
import re
from pymongo import MongoClient
class Poetry:
def __init__(self):
self.headers = {
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36"}
self.client = MongoClient(host="127.0.0.1", port=27017)
self.poetry = self.client['spider']['poetry']
self.poetries = []
def get_text(self, url):
r = requests.get(url, headers=self.headers)
r.encoding = r.apparent_encoding
text = r.text
return text
def parse_text(self, text):
#添加re.DOTALL方法後,.可以匹配\n即.可以匹配任意字符
titles = re.findall(r'<div class="cont">.*?<b>(.*?)</b>', text, re.DOTALL)
dynasties = re.findall(r'<p class="source">.*?<a.*?>(.*?)</a>', text, re.DOTALL)
authors = re.findall(r'<p class="source">.*?<a.*?<a.*?>(.*?)</a>', text, re.DOTALL)
raw_contents = re.findall(r'<div class="contson".*?>(.*?)</div>', text, re.DOTALL)
contents = []
for item in raw_contents:
new_item = re.sub(r'<.*?>|\n', "", item)
contents.append(new_item.strip())
tmp = zip(titles, dynasties, authors, contents)
for item in tmp:
title, dynasty, author, content = item
poetry = {
'title': title,
'dynasty': dynasty,
'author': author,
'content': content
}
self.poetries.append(poetry)
def print_poetries(self):
for item in self.poetries:
print(item)
def save_to_db(self):
self.poetry.insert_many(self.poetries)
def run(self):
template_url = "https://www.gushiwen.org/default_{}.aspx"
for i in range(1, 11):
url = template_url.format(i)
text = self.get_text(url)
self.parse_text(text)
self.print_poetries()
self.save_to_db()
p = Poetry()
p.run()
用正則表達式爬取古詩詞網
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
OSS_PIPE:Rust編寫的大規模文件遷移工具
京東雲開發者
2024-05-15 23:59:27
OSS_PIPE:Rust編寫的大規模文件遷移工具| 京東雲技術團隊
原創
2024-05-13 23:59:27
帶你瞭解GaussDB SQL中的BOOLEAN表達式
原創
2024-05-10 11:30:10
SpringBoot如何優雅的進行參數校驗(一)
原創
2024-04-23 23:15:58
最新版Spring Security 中的路徑匹配方案!
原創
2024-04-22 12:14:28
關於轉義符 \ 在php正則中的匹配問題
原創
2024-04-09 22:46:30
京東雲“智能編碼”上線了!免費試用
原創
2024-04-02 23:16:35
引領向量數據庫技術新變革,Milvus 2.4 正式上線!
原創
2024-03-25 21:26:35
(小實驗)理解編譯原理:一個四則運算的解釋器
原創
2024-03-25 10:20:45
Prompt 工程師壓箱底絕活——Prompt 的基本組成部分、格式化輸出與應用構建
原創
2024-03-21 00:45:40
O2OA(翱途)開發平臺系統安全-用戶登錄IP限制
原創
2024-03-14 22:57:18
從基礎到代碼實戰,帶你進階正則表達式的全方位應用
原創
2024-03-14 11:13:09
乾貨|Zabbix監控深信服超融合
Zabbix中國
2024-02-23 22:58:33
ES 規範爲什麼總在 6 月發版?
雲棲號資訊小哥
2020-07-08 18:47:09