1. 程式人生 > >使用正則表示式爬取古詩文網唐詩300首

使用正則表示式爬取古詩文網唐詩300首

思路

先從唐詩300首頁面獲取所有唐詩詳情頁的連結;
再從每一首唐詩的詳情頁提取標題、作者、朝代、內容等資訊。

原始碼

# !/usr/bin/env python
# -*- coding:utf-8 -*-

import re
import requests


def crawl(start_url):
    base_url='http://so.gushiwen.org'

    req_headers={
        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
} res=requests.get(start_url,headers=req_headers) if res.status_code==requests.codes.ok: html=res.text # 獲取所有詩的連結 parttern_href=re.compile(r'<span><a href="(.*?)".*?</span>',flags=re.DOTALL) hrefs=re.findall(parttern_href,html) # 獲取每一首詩的內容,並儲存到本地
with open('唐詩300首.txt',mode='a',encoding='utf-8') as f: for href in hrefs: href=base_url+href res=requests.get(href,headers=req_headers) if res.status_code == requests.codes.ok: html = res.text # 標題
parttern_title = re.compile(r'<div class="cont">.*?<h1 .*?>(.*?)</h1>', re.DOTALL) title=re.search(parttern_title,html).group(1) # 朝代 parttern_dynasty = re.compile(r'<div class="cont">.*?<p class="source"><a href=".*?">(.*?)</a><span>:.*?</p>', re.DOTALL) dynasty=re.search(parttern_dynasty,html).group(1) # 詩人 parttern_author = re.compile(r'<div class="cont">.*?<p class="source">.*?:</span><a href=".*?">(.*?)</a> </p>', re.DOTALL) author=re.search(parttern_author,html).group(1) # 內容 parttern_content = re.compile(r'<div class="cont">.*?<div class="contson" id=".*?">(.*?)</div>', re.DOTALL) content=re.search(parttern_content,html).group(1) content=re.sub(r'<br />','\n',content) content=re.sub(r'<p>','',content) content=re.sub(r'</p>','',content) print('正在獲取 {title}'.format(title=title)) f.write('{title}\n{dynasty}:{author}\n{content}\n'.format(title=title,dynasty=dynasty,author=author,content=content)) if __name__ == '__main__': start_url='http://so.gushiwen.org/gushi/tangshi.aspx' crawl(start_url)

執行結果

這裡寫圖片描述

相關推薦

使用表示式詩文唐詩300

思路 先從唐詩300首頁面獲取所有唐詩詳情頁的連結; 再從每一首唐詩的詳情頁提取標題、作者、朝代、內容等資訊。 原始碼 # !/usr/bin/env python # -*- coding:utf-8 -*- import re import r

用Requests和表示式豆瓣圖書TOP250

思路和上文大同小異。 import requests from requests.exceptions import RequestException import re import json headers = {'User-Agent':'Mozilla/5.0(Macinto

用Requests和表示式貓眼電影(TOP100+最受期待榜)

目標站點分析 目標站點(貓眼榜單TOP100): 如下圖,貓眼電影的翻頁offset明顯在URL中,所以只要搞定第一頁的內容加上一個迴圈加上offset就可以爬取前100。 流程框架 1、抓取單頁內容 利用requests請求目標站點,得到單個網頁HTML程式碼,返回結

自學python爬蟲(四)Requests+表示式貓眼電影

前言 學了requests庫和正則表示式之後我們可以做個簡單的專案來練練手咯!先附上專案GitHub地址,歡迎star和fork,也可以pull request哦~ 地址:https://github.com/zhangyanwei233/Maoyan100.git 正文開始哈哈哈

requests表示式貓眼電影

目標 通過Request+正則表示式爬取貓眼電影TOP100電影的排名、名字、電影封面圖片、主演、上映時間、貓眼評分,將爬取的內容寫入檔案中。 流程框架 進入到貓眼電影TOP100的頁面,此時的URL為http://maoyan.com/board/4,點選第2頁,會發現此時的URL為http://ma

requests+表示式豆瓣讀書top250

簡單的python練手專案,通過rquests庫請求得到豆瓣top250網頁原始碼,並通過正則表示式匹配得到對應資訊-書名,作者資訊,評分以及簡介。 網站的URL為’https://book.douban.com/top250?start=0’,但我們拉到底部發現250本讀書的資訊被分成了1

14-Requests+表示式貓眼電影

'''Requests+正則表示式爬取貓眼電影TOP100''''''流程框架:抓去單頁內容:利用requests請求目標站點,得到單個網頁HTML程式碼,返回結果。正則表示式分析:根據HTML程式碼分析得到電影的名稱、主演、上映時間、評分、圖片連結等資訊。儲存至檔案:通過檔案的形式儲存結果,每一部電影一個結

Python爬蟲實戰之Requests+表示式貓眼電影Top100

import requests from requests.exceptions import RequestException import re import json # from multiprocessing import Pool # 測試了下 這裡需要自己新增頭部 否則得不到網頁 hea

Python爬蟲-利用表示式貓眼電影

利用正則來爬去貓眼電影 =================================== ===================================================== 1 ''' 2 利用正則來爬去貓眼電影 3 1. url: http://maoya

通過分析ajax,使用表示式今日頭條

今日頭條是一個動態載入頁面的網站,這一類的網站直接使用requests爬取的話得不到我們想要的內容。所以一般這類的網站都是通過分析ajax來進行抓包來獲取我們想要的內容。 老規矩,首先列出需要引入的庫: import json import os from urllib.

利用Requests庫和表示式豆瓣影評Top250

說明         最近看了下爬蟲基礎,想寫個部落格來記錄一下,一來是可以方便和我一樣剛入門的小白來參考學習,二來也當做自己的筆記供自己以後查閱。         本文章是利用python3.6和Requests庫(需自行安裝,cmd裡執行pip install r

Requests+表示式貓眼TOP100電影

需要著重學習的地方:(1)爬取分頁資料時,url連結的構建(2)儲存json格式資料到檔案,中文顯示問題(3)執行緒池的使用(4)正則表示式的寫法 import requests from requests.exceptions import RequestException import re im

[python] 常用表示式網頁資訊及分析HTML標籤總結

這篇文章主要是介紹Python爬取網頁資訊時,經常使用的正則表示式及方法。它是一篇總結性文章,實用性比較大,主要解決自己遇到的爬蟲問題,也希望對你有所幫助~ 當然如果會Selenium基於自動化測試爬蟲、BeautifulSoup分析網頁DOM節點,這就更方便了,但本文更多

使用表示式500px上的圖片

   網址:https://500px.com/seanarcher,seanarcher是一個up主的名字 開啟這個網址,會發現有好多圖片,具體到每一個圖片的url地址 https://500px.com/photo/273383049/galya-by-sean-archer,其中

Requests+表示式貓眼電影top100

#!/usr/bin/python #coding=utf-8 # import requests from requests.exceptions import RequestException import re import json from multiproces

應用--天堂圖片圖片(普通版本,函式版本,類版本)

第一部分:普通版本一.os包的用法先引入import os# 如果資料夾不存在,建立資料夾 if not os.path.exists(title): # 建立資料夾 os.makedirs(title)二.用urlopen發起請求 發

python表示式豆瓣圖書資訊

import requests import re content = requests.get('https://book.douban.com/').text pattern = re.compile('<li.*?cover.*?href="(.*?)".*?ti

Python網路爬蟲:利用表示式豆瓣電影top250排行前10頁電影資訊

在學習了幾個常用的爬取包方法後,轉入爬取實戰。 爬取豆瓣電影早已是練習爬取的常用方式了,網上各種程式碼也已經很多了,我可能現在還在做這個都太土了,不過沒事,畢竟我也才剛入門…… 這次我還是利用正則表示式進行爬取,怎麼說呢,有人說寫正則表示式很麻煩,很多人都不

【Python】Requests+表示式 貓眼電影TOP100

1.先獲取到一個頁面,狀態碼200是成功返回 def get_one_page(url): # 獲取一個頁面 try: response = requests.get(url) if response.status_cod

python網路爬蟲例項:Requests+表示式貓眼電影TOP100榜

一、前言 最近在看崔慶才先生編寫的《Python3網路爬蟲開發實戰》這本書,學習了requests庫和正則表示式,爬取貓眼電影top100榜單是這本書的第一個例項,主要目的是要掌握requests庫和正則表示式在實際案例中的使用。 二、開發環境 執行平