豆瓣短評榜單短評下載
建立時間: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
函式
透過 lxml
的 etree
模組,使用 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)))
透過這樣的程式碼實現,我們能夠自動獲取豆瓣電影的短評資訊,為進一步的資料分析或其他應用提供了基礎。