豆瓣短評榜單短評下載

随风小屋發表於2024-08-11

豆瓣短評榜單短評下載

建立時間:2024-08-07

一、完整程式碼

import requests
from lxml import etree


def get_html(main_url):
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
    }
    # 拿連結
    res = requests.get(url, headers=header)
    res.encoding = res.apparent_encoding
    html = res.text
    return html


def get_url_lists(html):
    tree = etree.HTML(html)
    url_lists = tree.xpath('//div[@class="hd"]/a/@href')
    return url_lists


def movie_concat(html):
    tree = etree.HTML(html)
    content = tree.xpath('//div[@id="hot-comments"]//p[@class=" comment-content"]/span/text()')
    title = tree.xpath('//div[@class="mod-hd"]/h2/i/text()')
    movie_concat =  '\n' +title[0] + '\n' + '\n'.join(content)
    return movie_concat


def save_concat(movie_concat):
    with open('短評.txt', 'a+', encoding='utf-8') as f:
        f.write(movie_concat)


if __name__ == '__main__':
    url = 'https://movie.douban.com/top250?start=0'
    for url in get_url_lists(get_html(url)):
        save_concat(movie_concat(get_html(url)))

效果:

二、程式碼學習

以下是整個程式碼的主要邏輯和功能:

2.1 定義了一個 get_html 函式

用於獲取網頁的 HTML 內容。在這個函式中,我們設定了一個模擬瀏覽器的 User-Agent 頭部資訊,然後使用 requests.get 方法獲取網頁,並處理了編碼問題。

def get_html(main_url):
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
    }
    # 拿連結
    res = requests.get(url, headers=header)
    res.encoding = res.apparent_encoding
    html = res.text
    return html

2.2get_url_lists 函式

透過 lxmletree 模組,使用 xpath 表示式從 HTML 中提取出電影詳情頁的連結列表。

def get_url_lists(html):
    tree = etree.HTML(html)
    url_lists = tree.xpath('//div[@class="hd"]/a/@href')
    return url_lists

2.3 movie_concat 函式

進一步從每個電影詳情頁的 HTML 中提取出電影的標題和熱門短評內容,並進行整合。

def movie_concat(html):
    tree = etree.HTML(html)
    content = tree.xpath('//div[@id="hot-comments"]//p[@class=" comment-content"]/span/text()')
    title = tree.xpath('//div[@class="mod-hd"]/h2/i/text()')
    movie_concat =  '\n' +title[0] + '\n' + '\n'.join(content)
    return movie_concat

2.4 save_concat 函式

將整合好的電影短評內容儲存到一個名為 短評.txt 的檔案中。

def save_concat(movie_concat):
    with open('短評.txt', 'a+', encoding='utf-8') as f:
        f.write(movie_concat)

2.5 if __name__ == '__main__' 部分

我們指定了要爬取的豆瓣電影 top250 頁面的初始連結,並透過迴圈遍歷獲取到的電影詳情頁連結,依次獲取並儲存短評內容。

if __name__ == '__main__':
    url = 'https://movie.douban.com/top250?start=0'
    for url in get_url_lists(get_html(url)):
        save_concat(movie_concat(get_html(url)))

透過這樣的程式碼實現,我們能夠自動獲取豆瓣電影的短評資訊,為進一步的資料分析或其他應用提供了基礎。

相關文章