日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫—豆瓣电影海报(按类别)

發布時間:2024/1/1 python 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫—豆瓣电影海报(按类别) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://www.alannah.cn/2019/04/06/getdouban/

python爬蟲—豆瓣電影海報

目標:通過python爬蟲在豆瓣電影上按類別對電影海報等數據進行抓取,可以通過更改參數控制抓取數據的數量。

庫:python3.7+selenium+BeautifulSoup

ChromeDriver:https://pan.baidu.com/s/1MBG_AAx-gY5Z5Vc0Qv383A? 提取碼:69eh

由于豆瓣電影的類別網頁是動態加載,不能通過request直接對網頁進行抓取分析,通過selenium在瀏覽器上對網頁源碼進行動態加載然后分析。

由于豆瓣存在反爬蟲策略,如果頻繁的從豆瓣請求,豆瓣會封ip。為了避免被豆瓣偵測到,本人采用了一種較為笨拙的方式,對請求數據設定一定的延遲,不要過于頻繁的獲取數據,延遲設為2s即可,這會導致數據獲取速度較慢。

for item in items:movie = {'img':item.find('img')['src'],'id':item['data-id'],'title':item.find('img')['alt']}time.sleep(2)

最終獲取的獲取包含:

1、電影海報,命名格式為-id.jpg

2、info.csv(電影id、電影名稱、上映年份、評分、類型、導演、編劇、主演、國家)

可自行修改網頁分析部分獲取更多的數據

代碼如下:

# -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from bs4 import BeautifulSoup from selenium.common.exceptions import ElementNotVisibleException import time import requests import os import csv import re from selenium.common.exceptions import NoSuchElementExceptionclass DBDY:def __init__(self): # 進行初始化操作self.driver = webdriver.Chrome()self.wait = WebDriverWait(self.driver, 20)js = 'window.open("https://www.baidu.com");'self.driver.execute_script(js) # 新建一個標簽頁用于查看電影詳情def open_page(self,type): # 利用selenium驅動,打開豆瓣電影的網頁url = 'https://movie.douban.com/tag/#/?sort=U&range=0,10&tags=電影,'+ typedriver = self.driverdriver.switch_to.window(driver.window_handles[0]) # 定位至總覽標簽頁driver.get(url)driver.refresh() #刷新網頁time.sleep(5)self.get_response(type)def get_response(self,type): # 該函數用來獲取信息driver = self.driverpage = driver.page_source # 獲取網頁源代碼soup = BeautifulSoup(page, 'html.parser')count = 0#加載更多more = soup.find_all('a', class_ = 'more')while(driver.find_element_by_class_name('more') and count<150):try:print('page: ',count)driver.find_element_by_class_name('more').click()count = count + 1time.sleep(3)except ElementNotVisibleException:breakpage = driver.page_source # 獲取網頁源代碼soup = BeautifulSoup(page, 'html.parser')items = soup.find_all('div', class_='cover-wp') # 找到每一部電影的相關信息print('打印網頁信息')for item in items:movie = {'img':item.find('img')['src'],'id':item['data-id'],'title':item.find('img')['alt']}time.sleep(2)is_Exist = self.download_poster_img(movie['img'],type,movie['id']) #下載海報if not is_Exist: #判斷當前電影是否存在self.get_info(movie['title'],type,movie['id'],'https://movie.douban.com/subject/')def get_info(self,title,movie_type,movie_id,url):try:driver = self.driverdriver.switch_to.window(driver.window_handles[1]) #定位至詳情標簽頁driver.get(url + movie_id + '/?tag='+movie_type+'&from=gaia') #打開電影詳情頁pagesource = driver.page_source#讀取電影信息info = driver.find_element_by_id('info').find_elements_by_tag_name('span')#電影評分rating = driver.find_element_by_tag_name('strong').text#上映年份year = driver.find_element_by_class_name('year').textyear = year.replace('(', '')year = year.replace(')', '')#主演actor = driver.find_element_by_class_name('actor').textactor = str.split(actor,':')[-1]actor = actor.replace(' ','')actor = actor.replace('/更多...','')#電影類型type_span = driver.find_elements_by_xpath(".//span[@property='v:genre']")type = ''for item in type_span:type = type + item.text + '/'#制片國家/地區#由于該內容在網頁中特殊,采用正則表達式對其進行搜索#'<span class="pl">制片國家/地區:</span> 英國<br />'expression = r'(?<=<span class="pl">制片國家/地區:</span>).+?(?=<br />)'pattern = re.compile(expression) #編譯正則表達式matcher = re.search(pattern,pagesource) #搜索匹配項country = matcher.group(0)country = country.replace(' ','')movie = {'id':movie_id,'title':title,'year':year,'rating':rating,'type':type,'director':info[2].text,'screenwriter':info[5].text,'actor':actor,'country':country}print(movie)self.record_info(movie)except NoSuchElementException:print('該電影信息不完善')try:os.remove('poster_img/'+movie_id+'.jpg')except FileNotFoundError:returndef download_poster_img(self,url,type,movie_id): #下載海報圖片res = requests.get(url)file_name = str.split(url, '/')[-1]img_type = str.split(file_name,'.')[-1]file_path = 'poster_img/' + movie_id + '.' + img_typeis_Exist = os.path.exists(file_path)if not is_Exist:print('download img file_path = ', file_path)with open(file_path, 'wb') as f:f.write(res.content)return is_Existdef record_info(self,movie): #記錄電影信息file = open('poster_img/info.csv','a',newline='',encoding='utf-8-sig')writer = csv.writer(file,dialect='excel')info = [movie['id'],movie['title'],movie['year'],movie['rating'],movie['type'],movie['director'].replace(' / ','/'),movie['screenwriter'].replace(' / ','/'),movie['actor'].replace(' / ', '/'),movie['country']]writer.writerow(info)file.close()if __name__ == '__main__':#movie_type = ['劇情', '喜劇', '動作', '愛情', '科幻', '動畫', '懸疑', '驚悚', '恐怖', '犯罪', '戰爭']movie_type = ['犯罪', '戰爭']db = DBDY()for type in movie_type: #遍歷所有電影類型print('正在爬取'+type+'電影')db.open_page(type)# 抓取完所有的信息后關閉網頁db.driver.quit()

?

總結

以上是生活随笔為你收集整理的python爬虫—豆瓣电影海报(按类别)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品网站免费 | 久久国产热 | 夜夜嗨av一区二区三区网页 | 日本三级吃奶头添泬无码苍井空 | 91偷拍富婆spa盗摄在线 | 熟女少妇一区二区三区 | 一区二区国产在线观看 | 中文字幕无码日韩专区免费 | 干干操操 | 色天天色综合 | 亚洲资源av | 91亚洲国产成人精品一区二三 | 三级视频黄色 | 娇小激情hdxxxx学生 | 久久精品国产亚洲av久 | www中文字幕在线观看 | 在线1区 | 在线免费观看黄色网址 | 亚洲天天 | 小视频在线免费观看 | 久久久精品免费 | 777精品视频 | av青娱乐| 91在线视频国产 | 98色| 乌克兰极品av女神 | 777片理伦片在线观看 | 欧美性生活网 | 一区二区三区四区免费 | 天天干天天舔天天射 | 免费观看一级黄色片 | 国产一区二区三区视频在线观看 | 国产最新视频 | 日韩污污 | 亚洲av无码国产精品久久久久 | 天天色综网 | www.污视频 | 中国黄色片视频 | 精品xxxxx| 国产又白又嫩又爽又黄 | 国产91精品久久久久久久 | 天堂网视频在线观看 | cao在线| 熟妇人妻va精品中文字幕 | 精品久久久无码中文字幕边打电话 | 天天操天天玩 | 黄色伊人 | 97国产精品久久 | 亚洲视频黄| 福利网址在线 | 91艹 | 无码免费一区二区三区免费播放 | 人人搞人人插 | 久久免费激情视频 | 久久中文字幕高清 | 日韩精品成人一区 | 欧美一级久久 | 99热免费在线观看 | 美女100%视频免费观看 | 最新日韩av | 色交视频 | 欧美啪啪一区二区 | 日本精品久久久久久久 | 黑人中文字幕一区二区三区 | 女生高潮视频在线观看 | 白峰美羽在线播放 | www日本色| 亚洲欧美日韩视频一区 | 亚洲成人激情小说 | 精品女同一区 | 色狠狠一区二区三区 | 成人免费看片 | 欧美精品videos另类日本 | 刘亦菲毛片一区二区三区 | 一本一本久久a久久精品综合麻豆 | 亚洲区一区二 | 日本二区在线观看 | 在线观看亚洲区 | 日韩一级免费观看 | 青青草超碰 | 成人看片黄a免费看视频 | 成年人视频在线 | 特级做a爱片免费69 少妇第一次交换又紧又爽 亚洲大胆人体 | 特黄三级又爽又粗又大 | 日本新japanese乱熟 | 国产一级一区二区 | 日韩av不卡在线观看 | 亚洲一品道| 中文字幕日韩一级 | 久久影音先锋 | 亚洲人xxx| 鸥美毛片 | 在线观看毛片视频 | 久久久九九| 国产精品综合在线 | 国产免费小视频 | 国产美女av在线 | 欧美福利一区 | 一级片视频播放 |