国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Requests+正則表達式爬取貓眼電影

30e8336b8229 / 1300人閱讀

摘要:目標通過正則表達式爬取貓眼電影電影的排名名字電影封面圖片主演上映時間貓眼評分,將爬取的內容寫入文件中。為了加快爬取網頁的速度,可以開啟循環和多線程當需要爬取的信息很大時,這是一個不錯的技巧。

目標

通過Request+正則表達式爬取貓眼電影TOP100電影的排名、名字、電影封面圖片、主演、上映時間、貓眼評分,將爬取的內容寫入文件中。

流程框架

進入到貓眼電影TOP100的頁面,此時的URL為http://maoyan.com/board/4,點擊第2頁,會發現此時的URL為http://maoyan.com/board/4?offset=10,點擊第3頁,會發現URL變成了http://maoyan.com/board/4?offset=20,由此可以推斷出offset參數為偏移量,如果偏移量為n,則顯示電影序號就是n+1到n+10,每頁顯示10個,所以,如果想獲取TOP100電影,只需要分開請求10次,而10次的offset參數分別設置為0、10、20......90即可,這樣獲取不同的頁面之后,再用正則表達式提取出相關信息,就可以得到TOP100的所有電影信息了。獲取信息后,可以將信息寫入txt文件,當然可以存入數據庫(此處為了偷懶,就不存入數據庫了)。為了加快爬取網頁的速度,可以開啟循環和多線程(當需要爬取的信息很大時,這是一個不錯的技巧)。

下圖展示了具體的流程框架:

(1)抓取單頁內容
# 獲取單個頁面的HTML代碼
def get_one_page(url):
    try:
        # 此處如果不加headers進行偽裝,將會返回403錯誤(拒絕訪問)
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
        }
        response = requests.get(url, headers = headers)
        # 如果返回的狀態碼是200,表示請求正常,返回頁面HTML代碼
        # 否則,返回None
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

接下來測試一下是否可以獲取頁面內容:

if __name__ == "__main__":
    url = "http://maoyan.com/board/4"
    html = get_one_page(url)
    print(html)
(2)正則表達式分析

可以對get_one_page(url)函數爬取的HTML代碼進行分析(此處為了方便觀看,直接在瀏覽器控制臺分析),利用正則表達式獲取到有用的信息(電影的排名、名字、電影封面圖片、主演、上映時間、貓眼評分)。

# 解析單個頁面的HTML代碼,利用re模塊提取出有效信息
def parse_one_page(html):
    # re.S:表示“.”的作用擴展到整個字符串,包括“
”
    pattern = re.compile("
.*?board-index.*?>(d+).*?data-src="(.*?)".*?name">(.*?).*?star">(.*?)

.*?releasetime">(.*?)

.*?integer">" +"(.*?).*?fraction">(.*?).*?
", re.S) items = re.findall(pattern, html) for item in items: # 構造生成器函數 yield{ "index": item[0], "image": item[1], "title": item[2], "actor": item[3].strip()[3:], "time": item[4].strip()[5:], "score": item[5]+item[6] }

接下來測試一下是否可以得到我們想要的內容:

if __name__ == "__main__":
    url = "http://maoyan.com/board/4"
    html = get_one_page(url)
    items = parse_one_page(html)
    for item in items:
        print(item)

控制臺輸出如下:

單個頁面信息解析正確,那么,想要獲得多個頁面的信息,只需寫一個循環遍歷即可:

def main(offset):
    url = "http://maoyan.com/board/4?offset=" + str(offset)
    html = get_one_page(url)
    for item in parse_one_page(html):
        print(item)

if __name__ == "__main__":
    for i in range(10):
        main(i*10)
(3)保存至文件

只需寫一個簡單的函數即可完成,但此處需要注意一點,為保證輸出文件為中文,在讀寫文件時要添加參數endcoding="utf-8"

# 將解析出的內容寫入文件
def write_to_file(content):
    # 添加endcoding="utf-8"確保輸出到文件中為中文
    with open("result.txt", "a", encoding="utf-8 ") as f:
        # 此處建議將解析出的內容編碼為json格式再寫入文件,json的好處在此不過多敘述
        # 如果使用了json進行編碼,務必添加參數ensure_ascii=False確保編碼數據為中文
        # json.dumps():編碼json數據
        f.write(json.dumps(content, ensure_ascii=False) + "
")
        f.close()

運行代碼,目標信息被寫入result.txt文件中:

(4)開啟循環及多線程

為了加快頁面爬取速度,可以使用多線程(針對大量數據時非常有效)。

if __name__ == "__main__":
    pool = Pool()
    pool.map(main, [i*10 for i in range(10)])
項目完整代碼已托管到github:https://github.com/panjings/p...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42751.html

相關文章

  • python正則達式簡單爬蟲入門+案例(爬取貓眼電影TOP榜)

    摘要:用迭代進行異步操作保存寫入文件配置啟動函數使用多進程加速一秒完成 用正則表達式實現一個簡單的小爬蟲 常用方法介紹 1、導入工具包 import requests #導入請求模塊 from flask import json #導入json模塊 from requests.exceptions import RequestException #異常捕捉模塊 import re #導入正則...

    xiaowugui666 評論0 收藏0
  • requests+正則達式+multiprocessing多線程抓取貓眼電影TOP100

    摘要:本文介紹利用庫庫和正則表達式爬取貓眼電影電影的相關信息,提取出電影名稱上映時間評分封面圖片等信息,將爬取的內容寫入到文件中。獲取到不同的網頁后使用正則表達式提取出我們要的信息,就可以得到電影信息了,可以使用多線程加速爬取。 本文介紹利用Requests庫、multiprocessing庫和正則表達式爬取貓眼電影TOP100電影的相關信息,提取出電影名稱、上映時間、評分、封面圖片等信息,...

    jifei 評論0 收藏0
  • Python3網絡爬蟲實戰---27、Requests正則達式抓取貓眼電影排行

    摘要:所以我們如果想獲取電影,只需要分開請求次,而次的參數設置為,,,,即可,這樣我們獲取不同的頁面結果之后再用正則表達式提取出相關信息就可以得到的所有電影信息了。上一篇文章網絡爬蟲實戰正則表達式下一篇文章網絡爬蟲實戰解析庫的使用 上一篇文章:Python3網絡爬蟲實戰---26、正則表達式下一篇文章:Python3網絡爬蟲實戰---28、解析庫的使用:XPath 本節我們利用 Reque...

    SwordFly 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 實戰!《長津湖》為什么這么火爆?我用 Python 來分析貓眼影評

    摘要:作者周蘿卜鏈接長津湖貓眼影評歡迎關注,專注數據分析數據挖掘好玩工具對于這個十一黃金周的電影市場,絕對是長津湖的天下,短短幾天,票房就已經突破億,大有奮起直追戰狼的盡頭。 ...

    lijy91 評論0 收藏0

發表評論

0條評論

30e8336b8229

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<