国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】爬蟲練習(xí)-爬取豆瓣網(wǎng)電影評論用戶的觀影習(xí)慣數(shù)據(jù)

這篇具有很好參考價值的文章主要介紹了【Python】爬蟲練習(xí)-爬取豆瓣網(wǎng)電影評論用戶的觀影習(xí)慣數(shù)據(jù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

一、配置環(huán)境

1.1、 安裝Python

1.2、?安裝Requests庫和BeautifulSoup庫

1.3.、安裝Matplotlib

二、登錄豆瓣網(wǎng)(重點)

2.1、獲取代理

2.2、測試代理ip是否可用

2.3、設(shè)置大量請求頭隨機使用

2.4、登錄豆瓣網(wǎng)

三、爬取某一部熱門電影數(shù)據(jù)

3.1、爬取全部長、短評論

3.2、獲取用戶觀影數(shù)據(jù)

3.3、存入數(shù)據(jù)庫

四、實戰(zhàn)代碼示例

五、總結(jié)


前言

豆瓣網(wǎng)是一個具有影響力的電影評論網(wǎng)站,其中包含大量的用戶評論和評分數(shù)據(jù)。這些數(shù)據(jù)可以用于研究電影市場和用戶觀影習(xí)慣,同時還可以用于電影推薦算法以及在線視頻網(wǎng)站的用戶行為分析等方面,因此對于想要學(xué)習(xí)數(shù)據(jù)分析和機器學(xué)習(xí)的人來說,爬取豆瓣網(wǎng)電影評論數(shù)據(jù)是一個很好的練手項目。

【Python】爬蟲練習(xí)-爬取豆瓣網(wǎng)電影評論用戶的觀影習(xí)慣數(shù)據(jù),windows,python,開發(fā)語言,爬蟲

本文將詳細介紹如何使用Python爬蟲抓取豆瓣網(wǎng)電影評論用戶的觀影習(xí)慣數(shù)據(jù),并進行簡單的數(shù)據(jù)處理和分析。

一、配置環(huán)境

在開始爬取豆瓣網(wǎng)電影評論數(shù)據(jù)之前,我們需要配置好Python開發(fā)環(huán)境和相關(guān)依賴庫。

1.1、 安裝Python

首先,我們需要安裝Python。建議使用Python 3.x版本??梢栽诠倬W(wǎng)下載并安裝對應(yīng)版本的Python:https://www.python.org/downloads/。

1.2、?安裝Requests庫和BeautifulSoup庫

接下來,我們需要安裝兩個Python庫:Requests和BeautifulSoup。Requests庫可以用于發(fā)送HTTP請求,獲取網(wǎng)頁內(nèi)容,而BeautifulSoup庫可以用于解析HTML文檔,提取所需數(shù)據(jù)。

可以使用pip命令自動安裝這兩個庫:

pip install requests

pip install beautifulsoup4
1.3.、安裝Matplotlib

如果我們需要對抓取的數(shù)據(jù)進行可視化分析,可以使用Matplotlib庫??梢允褂胮ip命令安裝:

pip install matplotlib

安裝完成后,我們就可以開始爬取豆瓣網(wǎng)電影評論數(shù)據(jù)了。

二、登錄豆瓣網(wǎng)(重點)

豆瓣網(wǎng)對爬蟲有一定的反爬蟲策略,根據(jù)實戰(zhàn)經(jīng)驗反爬一般作用于用戶ID、用戶IP和請求頭的過濾,為了避免被封禁IP,代碼中需要加入一些反爬蟲措施:

  • 設(shè)置請求間隔
  • 使用代理IP
  • 偽裝請求頭等
2.1、獲取代理

??使用代理可以幫助我們隱藏自己的真實IP地址,避免被封禁IP或者限制訪問。在爬取豆瓣網(wǎng)電影評論數(shù)據(jù)時,如果頻繁地訪問同一個IP地址,豆瓣網(wǎng)可能會禁止我們的訪問,因此使用代理也可以防止被封禁。這里我使用的是站大爺代理ip來進行操作的。

??以下是使用用戶名+密碼授權(quán)獲取ip代碼示例:

?import requests

#你要訪問的網(wǎng)址
url = 'http://www.ip138.com/'
proxies = {
????????'http': 'http://賬號:密碼@ip:port',
????????'https': 'http://賬號:密碼@ip:port'
#“用戶名+密碼”授權(quán),賬號為實例ID,密碼為8位數(shù)字的密碼,不用MD5加密,在后臺的實例管理下可以看到
????}
response = requests.get(url, proxies=proxies)
2.2、測試代理ip是否可用

??測試代理IP是否可用是為了確保我們使用的代理IP能夠正常工作,防止由于代理IP失效或無效而導(dǎo)致爬蟲請求失敗。一般來說,我們可以通過發(fā)送請求來測試代理IP是否可用,如果請求成功則說明代理IP可用,否則說明代理IP無效或被封禁。

測試代理IP的代碼可以通過如下方式實現(xiàn):

  1. ? ? ? 定義一個函數(shù),接收代理IP和目標網(wǎng)站URL作為參數(shù)
  2. ? ? ? 在函數(shù)中,使用requests庫發(fā)送請求,并設(shè)置代理IP
  3. ? ? ? 如果請求成功,則說明代理IP可用,返回True
  4. ? ? ? 如果請求失敗,則說明代理IP無效或被封禁,返回False

以下是一段測試代理IP的代碼示例:

import requests

def test_proxy_ip(proxy_ip, target_url):
????proxies = {
???????'http': 'http://' + proxy_ip,
????????'https': 'http://' + proxy_ip
????}
????try:
????????response = requests.get(target_url, proxies=proxies, timeout=5)
????????if response.status_code == 200:
????????????return True
????????else:
????????????return False
????except:
????????return False

在上述代碼中,我們定義了一個test_proxy_ip函數(shù),該函數(shù)接收代理IP和目標網(wǎng)站URL作為參數(shù)。在函數(shù)中,我們首先根據(jù)傳入的代理IP構(gòu)造proxies字典,然后使用requests庫發(fā)送請求,并設(shè)置proxies參數(shù)為該字典。如果請求成功,則說明代理IP可用,函數(shù)返回True;否則函數(shù)返回False。

當我們在爬取豆瓣網(wǎng)電影評論數(shù)據(jù)時,可以使用上述代碼測試代理IP是否可用。如果代理IP可用,則使用該代理IP發(fā)送請求;如果代理IP無效或被封禁,則需要更換新的代理IP。

2.3、設(shè)置大量請求頭隨機使用

??爬取豆瓣網(wǎng)電影評論用戶的觀影習(xí)慣數(shù)據(jù)要設(shè)置大量請求頭隨機使用是為了防止網(wǎng)站監(jiān)測到我們的請求頭是模擬的,并防止被反爬蟲機制封禁IP。因此,我們需要盡可能多的提供不同的請求頭信息,對請求頭進行隨機使用,以降低被監(jiān)測到的概率。

以下是一個隨機使用請求頭的示例代碼:

import random

USER_AGENTS = [

??'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582',

??'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',

??'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299',

??# 更多用戶代理信息...

]

def get_random_user_agent():

????return random.choice(USER_AGENTS)

headers = {

???'User-Agent': get_random_user_agent(),

???'Referer': 'https://www.douban.com',

???'Cookie': 'your_cookie'

}

在以上代碼中,我們定義了一個USER_AGENTS列表,包含多個常用瀏覽器的User-Agent信息。然后定義了一個`get_random_user_agent()`函數(shù),用于隨機從USER_AGENTS列表中獲取一個User-Agent信息。最后,我們設(shè)置headers變量,使用`get_random_user_agent()`函數(shù)獲取隨機的User-Agent信息,并將其賦值到headers變量中,作為請求頭信息。

需要注意的是,我們在使用隨機請求頭的同時,仍然需要保持一定的爬取速度和請求間隔,以避免被封禁。同時,如果服務(wù)器在返回的內(nèi)容中發(fā)現(xiàn)請求頭信息異常,我們也可能被視為爬蟲而被封禁。因此,在進行豆瓣網(wǎng)電影評論用戶數(shù)據(jù)爬取時,需要謹慎處理請求頭信息。

2.4、登錄豆瓣網(wǎng)

以下是一個使用selenium模擬登錄豆瓣網(wǎng)并保存cookie的示例代碼:

from selenium import webdriver
import time
import pickle

login_url = 'https://accounts.douban.com/passport/login?source=movie'
username = 'your_username'
password = 'your_password'
cookie_file = 'cookies.pkl'
# 啟動瀏覽器
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
# 訪問登錄頁面
driver.get(login_url)
# 輸入用戶名和密碼
driver.find_element_by_id('username').send_keys(username)
driver.find_element_by_id('password').send_keys(password)
# 等待用戶輸入驗證碼
time.sleep(30)
# 點擊登錄按鈕
driver.find_element_by_class_name('account-form-field-submit ').click()
# 等待新頁面加載完成
time.sleep(10)
# 保存cookie到文件
cookies = driver.get_cookies()
with open(cookie_file, 'wb') as f:
????pickle.dump(cookies, f)
# 關(guān)閉瀏覽器
driver.quit()

在以上代碼中,我們首先初始化了一些變量,包括登錄頁面的URL、豆瓣賬號的用戶名和密碼、以及保存cookie的文件名。

然后,我們啟動了Chrome瀏覽器,并通過`driver.get()`方法訪問了豆瓣登錄頁面。接著,我們使用`selenium`模擬了用戶在頁面上輸入了用戶名和密碼,并等待了30秒,以留出時間輸入驗證碼。

最后,我們點擊登錄按鈕,等待新頁面加載完成,獲取了cookies并將其保存到本地文件中。注意,這里我們使用了pickle模塊將cookies對象序列化并保存到文件中,以便后續(xù)使用。

同時,我們還使用了`driver.quit()`方法關(guān)閉了瀏覽器。

三、爬取某一部熱門電影數(shù)據(jù)

??前面我們已經(jīng)把爬取豆瓣網(wǎng)的準備工作全部完成,然后接下來就是爬取豆瓣網(wǎng)中某一部熱門電影的各種數(shù)據(jù)了

3.1、爬取全部長、短評論

爬取熱門電影的全部長短評論可以獲得以下信息:

  • ? ? ? 用戶評價:通過閱讀用戶的評論,可以了解用戶對電影的評價、看法和推薦指數(shù)等信息,有助于我們更好地了解電影的口碑和觀眾反應(yīng)。
  • ? ? ? 關(guān)鍵詞提?。和ㄟ^分析評論文本提取關(guān)鍵詞,可以了解電影的主題、情感、人物關(guān)系等信息,有助于我們深入了解電影的故事情節(jié)和風格。
  • ? ? ? 數(shù)據(jù)分析:通過統(tǒng)計評論數(shù)量、評分分布、用戶畫像等數(shù)據(jù),可以幫助我們更好地了解電影的市場表現(xiàn)和受眾群體,為影視公司、制片人和電影院等決策者提供有價值的數(shù)據(jù)支持。

因此,爬取熱門電影的全部長短評論是一項非常有價值的工作,可以為我們提供大量有用的信息和數(shù)據(jù)分析基礎(chǔ)。

以下是一個使用BeautifulSoup和requests庫爬取豆瓣網(wǎng)某部電影全部長、短評論說明的示例代碼

import requests
from bs4 import BeautifulSoup

# 設(shè)置請求頭
headers = {
????'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
# 豆瓣電影頁面URL
url = 'https://movie.douban.com/subject/1292052/'
# 發(fā)送請求獲取頁面HTML
response = requests.get(url, headers=headers)
html = response.text
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html, 'html.parser')
# 查找長評和短評標簽
long_comments = soup.select_one('#hot-comments > div > div.article > span')
short_comments = soup.select_one('#comments > div > h2 > span')
# 提取評論數(shù)量并輸出
long_comments_count = long_comments.text.replace('全部', '').replace('條', '').strip()
short_comments_count = short_comments.text.replace('全部', '').replace('條', '').strip()
print(f"長評:{long_comments_count}")
print(f"短評:{short_comments_count}")
# 查找所有長評和短評內(nèi)容
long_comments_list = soup.select('#hot-comments > div > div.article > div > div.comment > p')
short_comments_list = soup.select('#comments > div > div.comment > p')
# 輸出每個評論的內(nèi)容
for comment in long_comments_list:
????print(comment.text.strip())???
for comment in short_comments_list:
????print(comment.text.strip())

在以上代碼中,我們首先設(shè)置了請求頭,指定了請求的User-Agent信息。然后,我們定義了電影頁面的URL,并發(fā)送了GET請求獲取了頁面的HTML。

接著,我們使用BeautifulSoup解析了頁面的HTML,并查找了長評和短評標簽。通過提取標簽文本中的評論數(shù)量信息,我們可以輸出電影的長、短評數(shù)量。

最后,我們再次使用CSS選擇器查找所有長、短評內(nèi)容,并通過遍歷列表輸出了每個評論的文本內(nèi)容。

3.2、獲取用戶觀影數(shù)據(jù)

??獲取用戶觀影數(shù)據(jù)可以幫助我們了解用戶的觀影喜好和習(xí)慣,可以通過分析用戶的觀影歷史和評分記錄等內(nèi)容,得到以下信息:

  • ? ? ? 用戶偏好:根據(jù)用戶觀影歷史和評分記錄,可以了解用戶的觀影偏好和喜好,有助于我們推薦更符合用戶口味的電影和影視作品
  • ? ? ? 影視推薦:通過分析用戶的觀影歷史和評分記錄,可以為用戶推薦更符合其口味的電影和影視作品,提高用戶體驗和滿意度
  • ? ? ? 數(shù)據(jù)分析:通過統(tǒng)計用戶評分和觀影記錄,可以了解影片的市場表現(xiàn)和受眾群體,為制片人、電影院和影視公司等提供有價值的數(shù)據(jù)分析支持

因此,獲取用戶觀影數(shù)據(jù)是一項非常有價值的工作。以下是獲取用戶觀影數(shù)據(jù)的Python代碼示例:

import requests
import json

# 登錄豆瓣網(wǎng)
session = requests.session()
url = 'https://accounts.douban.com/j/mobile/login/basic'
headers = {
????'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
????'Referer': 'https://accounts.douban.com/passport/login',
}
data = {
????'name': 'your_username', # 替換為自己的用戶名
????'password': 'your_password', # 替換為自己的密碼
????'remember': 'false',
}
session.post(url, headers=headers, data=data)
# 獲取用戶觀影數(shù)據(jù)
uid = 'your_user_id' # 替換為自己的用戶ID
url = 'https://movie.douban.com/subject_suggest?q=%E7%94%B5%E5%BD%B1' # 電影頁面URL
headers = {
????'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
????'Referer': 'https://www.douban.com/',
}
response = session.get(url, headers=headers)
data = json.loads(response.text)
movie_id = data[0]['id'] # 獲取電影ID
url = f'https://movie.douban.com/subject/{movie_id}/' # 獲取電影詳情頁面URL
response = session.get(url, headers=headers)
url = response.url + 'comments?start=0&limit=20&status=P&sort=new_score' # 獲取電影短評頁面URL
response = session.get(url, headers=headers)
data = response.text
print(data) # 輸出評論內(nèi)容

以上代碼示例中,我們首先需要登錄豆瓣網(wǎng),然后通過獲取電影ID和電影詳情頁面URL來獲取其熱門評論頁面的URL,最后通過發(fā)送HTTP請求獲取評論數(shù)據(jù)。注意,需要設(shè)置請求頭信息,以避免請求被網(wǎng)站屏蔽。

3.3、存入數(shù)據(jù)庫

將獲取的數(shù)據(jù)存入數(shù)據(jù)庫的好處:

  • ? ? ? 數(shù)據(jù)持久化:將數(shù)據(jù)存入數(shù)據(jù)庫中可以保證數(shù)據(jù)長期保存,避免數(shù)據(jù)丟失的情況
  • ? ? ? 數(shù)據(jù)分析:將數(shù)據(jù)存入數(shù)據(jù)庫后,可以使用SQL等工具進行數(shù)據(jù)分析和數(shù)據(jù)挖掘,得到更深入的信息和結(jié)論
  • ? ? ? 數(shù)據(jù)管理:將數(shù)據(jù)存入數(shù)據(jù)庫后,可以方便對數(shù)據(jù)進行管理、查詢和更新

以下是將獲取的去重后的數(shù)據(jù)存入數(shù)據(jù)庫的Python代碼示例:

import requests
import json
import pymysql

# 登錄豆瓣網(wǎng)
session = requests.session()
url = 'https://accounts.douban.com/j/mobile/login/basic'
headers = {
????'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
????'Referer': 'https://accounts.douban.com/passport/login',
}
data = {
????'name': 'your_username', # 替換為自己的用戶名
????'password': 'your_password', # 替換為自己的密碼
????'remember': 'false',
}
session.post(url, headers=headers, data=data)
# 獲取用戶觀影數(shù)據(jù)
uid = 'your_user_id' # 替換為自己的用戶ID
url = 'https://movie.douban.com/subject_suggest?q=%E7%94%B5%E5%BD%B1' # 電影頁面URL
headers = {
????'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
????'Referer': 'https://www.douban.com/',
}
response = session.get(url, headers=headers)
data = json.loads(response.text)
movie_id = data[0]['id'] # 獲取電影ID
url = f'https://movie.douban.com/subject/{movie_id}/' # 獲取電影詳情頁面URL
response = session.get(url, headers=headers)
url = response.url + 'comments?start=0&limit=20&status=P&sort=new_score' # 獲取電影短評頁面URL
response = session.get(url, headers=headers)
data = response.json()
result = []
for comment in data['comments']:
????item = {
????????'id': comment['id'],
????????'user_name': comment['author']['name'],
????????'rating': comment['rating']['value'],
????????'create_time': comment['created_at'],
????????'content': comment['content'],
????}
????result.append(item)
# 去重
result2 = []
for i in result:
????if i not in result2:
????????result2.append(i)
# 存入數(shù)據(jù)庫
db = pymysql.connect(host='localhost', user='root', password='123456', database='test')
cursor = db.cursor()
for item in result2:
????sql = f"insert into movie_comment (id, user_name, rating, create_time, content) values ({item['id']}, '{item['user_name']}', {item['rating']}, '{item['create_time']}', '{item['content']}')"
????cursor.execute(sql)
db.commit()
db.close()

以上代碼示例中,我們使用Python連接到本地MySQL數(shù)據(jù)庫,并將去重后的數(shù)據(jù)存入到數(shù)據(jù)庫中的movie_comment表中。注意,需要根據(jù)自己的數(shù)據(jù)庫用戶名、密碼、數(shù)據(jù)庫名以及數(shù)據(jù)表名進行替換。

四、實戰(zhàn)代碼示例

由于豆瓣網(wǎng)對爬蟲有一定的反爬蟲策略,為了避免被封禁IP,代碼中需要加入一些反爬蟲措施,如設(shè)置請求間隔、使用代理IP、偽裝請求頭等。

以下是一個基于Python的爬蟲示例,可以爬取指定電影的所有評論用戶的觀影習(xí)慣數(shù)據(jù),并保存至CSV文件中:

import?requestsfrom?bs4 import?BeautifulSoupimport?csvimport?timefrom?random import?randint

MOVIE_URL = 'https://movie.douban.com/subject/xxxxxx/'?# 請?zhí)鎿Q成具體電影的URL
CSV_FILE = 'douban.csv'?# CSV文件名
# 設(shè)置請求頭部信息,包括User-Agent和Referer
headers = {
? ? 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
? ? 'Referer': MOVIE_URL,
}
# 設(shè)置代理IP列表,用于反爬蟲策略
proxies = ['http://xxx.xxx.xx.xx:xxxx', 'http://yyy.yyy.yy.yy:yyyy', ...] # 請?zhí)鎿Q成實際的代理IP
# 設(shè)置請求間隔,用于反爬蟲策略
WAIT_TIME = 1?# 單位為秒,可適當調(diào)整
# 定義函數(shù)獲取指定URL的HTML內(nèi)容def?get_html(url):
? ? try:
? ? ? ? proxy = {'http': proxies[randint(0, len(proxies)-1)]} # 從代理IP列表中隨機選擇一個代理
? ? ? ? response = requests.get(url, headers=headers, proxies=proxy)
? ? ? ? if?response.status_code == 200:
? ? ? ? ? ? return?response.text
? ? except?requests.exceptions.RequestException as?e:
? ? ? ? print(e)
? ? ? ? return?None
# 獲取評論用戶主頁鏈接def?get_user_link(comment_soup):
? ? try:
? ? ? ? user_tag = comment_soup.find('span', class_='comment-info').find('a')
? ? ? ? user_link = user_tag.get('href')
? ? ? ? return?user_link
? ? except:
? ? ? ? return?None
# 解析評論用戶主頁,獲取觀影習(xí)慣數(shù)據(jù)def?get_user_data(user_link):
? ? user_data = {}
? ? html = get_html(user_link)
? ? time.sleep(WAIT_TIME)
? ? if?html:
? ? ? ? soup = BeautifulSoup(html, 'html.parser')
? ? ? ? # 獲取用戶??搭愋?? ? ? ? try:
? ? ? ? ? ? type_tags = soup.find_all('span', class_='tags-body')
? ? ? ? ? ? type_list = [t.text.strip() for?t in?type_tags]
? ? ? ? ? ? user_data['type'] = ','.join(type_list)
? ? ? ? except:
? ? ? ? ? ? user_data['type'] = ''
? ? ? ? # 獲取用戶評分前幾名的電影(除當前電影外)
? ? ? ? user_data['top_movies'] = ''
? ? ? ? try:
? ? ? ? ? ? movie_tags = soup.find_all('div', class_='info')
? ? ? ? ? ? movie_list = []
? ? ? ? ? ? for?tag in?movie_tags:
? ? ? ? ? ? ? ? movie_name_tag = tag.find('a', class_='title')
? ? ? ? ? ? ? ? if?movie_name_tag and?movie_name_tag['href'] != MOVIE_URL: # 排除當前電影
? ? ? ? ? ? ? ? ? ? movie_list.append(movie_name_tag.text)
? ? ? ? ? ? ? ? if?len(movie_list) >= 5: # 最多獲取前5名
 ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? user_data['top_movies'] = ','.join(movie_list)
? ? ? ? except:
? ? ? ? ? ? pass
? ? return?user_data
# 主函數(shù)def?main():
? ? print('開始爬取...')
? ? # 獲取評論列表
? ? comments = []
? ? page = 0
? ? while?True:
? ? ? ? page += 1
? ? ? ? url = MOVIE_URL + 'comments?start='?+ str((page-1) * 20)
? ? ? ? html = get_html(url)
? ? ? ? time.sleep(WAIT_TIME)
? ? ? ? if?html:
? ? ? ? ? ? soup = BeautifulSoup(html, 'html.parser')
? ? ? ? ? ? comment_tags = soup.find_all('div', class_='comment-item')
? ? ? ? ? ? if?comment_tags:
 ? ? ? ? ? ? ? comments.extend(comment_tags)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? break?# 沒有更多評論
? ? ? ? else:
? ? ? ? ? ? break?# 請求失敗
? ? # 獲取每個評論用戶的觀影習(xí)慣數(shù)據(jù)
? ? user_data_list = []
? ? for?comment in?comments:
? ? ? ? user_link = get_user_link(comment)
? ? ? ? if?user_link:
? ? ? ? ? ? user_data = get_user_data(user_link)
? ? ? ? ? ? user_data_list.append(user_data)
? ? ? ? ? ? print('已爬取 {} 個用戶觀影數(shù)據(jù)'.format(len(user_data_list)))
? ? ? ? ? ? time.sleep(WAIT_TIME)
? ? # 將數(shù)據(jù)保存至CSV文件
? ? with?open(CSV_FILE, mode='w', encoding='utf-8', newline='') as?f:
? ? ? ? fieldnames = ['type', 'top_movies']
? ? ? ? writer = csv.DictWriter(f, fieldnames=fieldnames)
? ? ? ? writer.writeheader()
? ? ? ? for?data in?user_data_list:
? ? ? ? ? ? writer.writerow(data)

? ? print('爬取完成,數(shù)據(jù)已保存至 {} 文件中。'.format(CSV_FILE))
if?__name__ == '__main__':
? ? main()

需要注意的是,以上代碼僅供參考,實際使用時需要根據(jù)具體情況進行調(diào)整。另外,爬蟲涉及到的法律問題和道德問題需要認真考慮,不要用于非法用途或侵犯他人隱私等行為。

需要注意的幾點:

  1. 為了避免被豆瓣網(wǎng)封禁IP,建議設(shè)置訪問間隔時間至少為1秒
  2. 豆瓣網(wǎng)的HTML代碼變化頻繁,需要不斷調(diào)整解析代碼以適應(yīng)新的HTML格式
  3. 爬取用戶信息可能涉及到用戶隱私,應(yīng)嚴格按照相關(guān)法律法規(guī)來進行。

五、總結(jié)

爬取豆瓣網(wǎng)電影評論用戶的觀影習(xí)慣數(shù)據(jù)能夠得出用戶的觀影時間偏好、觀影類型偏好、觀影評分偏好、觀影影院偏好和地理位置偏好等信息。通過這些數(shù)據(jù)分析,豆瓣網(wǎng)能夠更好地為用戶推薦電影和為廣告主提供更精準的廣告投放服務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-703790.html

到了這里,關(guān)于【Python】爬蟲練習(xí)-爬取豆瓣網(wǎng)電影評論用戶的觀影習(xí)慣數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python爬蟲案例分享【爬取豆瓣電影排行榜的電影名稱和評分】

    注意:在運行此代碼之前,請確保已安裝 requests 和 beautifulsoup4 庫

    2024年01月19日
    瀏覽(31)
  • Python爬蟲:一個爬取豆瓣電影人像的小案例

    Python爬蟲:一個爬取豆瓣電影人像的小案例

    從谷歌瀏覽器的開發(fā)工具進入 選擇圖片右鍵點擊檢查 翻頁之后發(fā)現(xiàn)網(wǎng)址變化的只有start數(shù)值,每次變化值為30 Python代碼 把爬取的圖片全部放到新建的文件夾中存放

    2024年02月10日
    瀏覽(88)
  • python爬蟲——爬取豆瓣top250電影數(shù)據(jù)(適合初學(xué)者)

    python爬蟲——爬取豆瓣top250電影數(shù)據(jù)(適合初學(xué)者)

    爬取豆瓣top250其實是初學(xué)者用于練習(xí)和熟悉爬蟲技能知識的簡單實戰(zhàn)項目,通過這個項目,可以讓小白對爬蟲有一個初步認識,因此,如果你已經(jīng)接觸過爬蟲有些時間了,可以跳過該項目,選擇更有挑戰(zhàn)性的實戰(zhàn)項目來提升技能。當然,如果你是小白,這個項目就再適合不過

    2024年02月07日
    瀏覽(23)
  • python爬取豆瓣電影排行前250獲取電影名稱和網(wǎng)絡(luò)鏈接[靜態(tài)網(wǎng)頁]————爬蟲實例(1)

    python爬取豆瓣電影排行前250獲取電影名稱和網(wǎng)絡(luò)鏈接[靜態(tài)網(wǎng)頁]————爬蟲實例(1)

    目錄 1.算法原理: 2.程序流程: 3.程序代碼: 4.運行結(jié)果(部分結(jié)果展示): 5.結(jié)果分析: (1)利用import命令導(dǎo)入模塊或者導(dǎo)入模塊中的對象; ①利用requests庫獲取數(shù)據(jù); ②用BeautifulSoup庫將網(wǎng)頁源代碼轉(zhuǎn)換成BeautifulSoup類型,以便于數(shù)據(jù)的解析和處理; ③用time庫進行時間延時

    2023年04月16日
    瀏覽(96)
  • Python網(wǎng)頁爬蟲爬取豆瓣Top250電影數(shù)據(jù)——Xpath數(shù)據(jù)解析

    Python網(wǎng)頁爬蟲爬取豆瓣Top250電影數(shù)據(jù)——Xpath數(shù)據(jù)解析

    1.1 查看原頁面信息 首先打開豆瓣Top250電影頁面,其網(wǎng)址是:https://movie.douban.com/top250。 可以發(fā)現(xiàn),該頁面展示的電影信息有中英文電影名、導(dǎo)演、主演、上映年份、國籍、電影類型、評分等。 下滑到頁面底部,發(fā)現(xiàn)第一頁有25部電影的數(shù)據(jù),并且可以點擊頁碼數(shù)實現(xiàn)頁面跳轉(zhuǎn)

    2024年02月05日
    瀏覽(29)
  • Python爬蟲——urllib_ajax的get請求爬取豆瓣電影前十頁

    Python爬蟲——urllib_ajax的get請求爬取豆瓣電影前十頁

    ajax: 就是一段js代碼,通過這段代碼,可以讓頁面發(fā)送異步的請求,或者向服務(wù)器發(fā)送一個東西,即和服務(wù)器進行交互 對于ajax: 一定會有 url,請求方法(get, post),可能有數(shù)據(jù) 一般使用 json 格式 打開豆瓣電影,F(xiàn)12打開控制臺(我這里是科幻類排行榜) 這是第一頁 第二頁 第

    2024年02月16日
    瀏覽(24)
  • 【爬蟲學(xué)習(xí)】1、利用get方法對豆瓣電影數(shù)據(jù)進行爬取

    【爬蟲學(xué)習(xí)】1、利用get方法對豆瓣電影數(shù)據(jù)進行爬取

    ??作者:白日參商 ???♂?個人主頁:白日參商主頁 ??堅持分析平時學(xué)習(xí)到的項目以及學(xué)習(xí)到的軟件開發(fā)知識,和大家一起努力呀?。?! ????加油! 加油! 加油! 加油 ??歡迎評論 ??點贊???? 收藏 ??加關(guān)注+! 1、導(dǎo)入python庫 2、獲取豆瓣電影的第一頁的數(shù)據(jù) 并

    2024年02月12日
    瀏覽(37)
  • 爬蟲項目實戰(zhàn):利用基于selenium框架的爬蟲模板爬取豆瓣電影Top250

    爬蟲項目實戰(zhàn):利用基于selenium框架的爬蟲模板爬取豆瓣電影Top250

    ?? Hi, I’m @貨又星 ?? I’m interested in … ?? I’m currently learning … ?? I’m looking to collaborate on … ?? How to reach me … README 目錄(持續(xù)更新中) 各種錯誤處理、爬蟲實戰(zhàn)及模板、百度智能云人臉識別、計算機視覺深度學(xué)習(xí)CNN圖像識別與分類、PaddlePaddle自然語言處理知識圖譜、

    2024年02月04日
    瀏覽(32)
  • Python爬取豆瓣電影Top 250,豆瓣電影評分可視化,豆瓣電影評分預(yù)測系統(tǒng)

    Python爬取豆瓣電影Top 250,豆瓣電影評分可視化,豆瓣電影評分預(yù)測系統(tǒng)

    博主介紹:?程序員徐師兄、7年大廠程序員經(jīng)歷。全網(wǎng)粉絲12w+、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn)? ?? 文末獲取源碼聯(lián)系 ?? ???? 精彩專欄推薦訂閱???? 不然下次找不到喲 2022-2024年最全的計算機軟件畢業(yè)設(shè)計選

    2024年03月21日
    瀏覽(23)
  • 爬蟲入門指南(7):使用Selenium和BeautifulSoup爬取豆瓣電影Top250實例講解【爬蟲小白必看】

    爬蟲入門指南(7):使用Selenium和BeautifulSoup爬取豆瓣電影Top250實例講解【爬蟲小白必看】

    在本篇博客中,我們將使用 Python 的 Selenium 和 BeautifulSoup 庫來實現(xiàn)一個簡單的網(wǎng)頁爬蟲,目的是爬取豆瓣電影TOP250的數(shù)據(jù),并將結(jié)果保存到Excel文件中。 Selenium 是一個自動化測試工具,可以模擬用戶在瀏覽器中的交互操作。我們將使用 Selenium 來打開網(wǎng)頁、獲取網(wǎng)頁源碼。 B

    2024年02月12日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包