好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解使用Selenium爬取豆瓣電影前100的愛情片相關信息

詳解使用Selenium爬取豆瓣電影前100的愛情片相關信息

熱門標簽:百應ai電銷機器人鄭州 如何在地圖標注文字 n400電話申請多少錢 女王谷地圖標注 地圖標注推廣單頁 ai地圖標注 西藏快速地圖標注地點 長春人工智能電銷機器人官網 廈門crm外呼系統如何

什么是Selenium

Selenium是一個用于測試網站的自動化測試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時也支持phantomJS無界面瀏覽器。

1.準備工作

由于Selenium的環境配置過程比較繁瑣,我會盡可能詳細的對其進行講解。

1.1 安裝Selenium

由于Selenium的環境配置過程比較繁瑣,我會多花一些篇幅對其進行講解。可以在cmd命令框輸入以下內容安裝Selenium庫。

pip install Selenium

1.2 瀏覽器驅動安裝

Selenium的使用必須有相應瀏覽器的webdriver,以Chrome瀏覽器為例,可以在這個鏈接查看自己的瀏覽器對應的Chromedriver的版本。

1.3 環境變量添加

設置瀏覽器的地址非常簡單。 我們可以手動創建一個存放瀏覽器驅動的目錄, , 將下載的瀏覽器驅動文件丟到該目錄下。然后在我的電腦–>屬性–>系統設置–>高級–>環境變量–>系統變量–>Path,將該目錄添加到Path的值中。如果配置變量有問題,可以參照這個鏈接

注意,如果系統報錯為:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created:This version of ChromeDriver only supports Chrome version***

表示當前下載的Chromedriver的版本與自己瀏覽器的版本無法對應,可以通過Chrome的幫助查看自己的瀏覽器版本

1.4 小試牛刀

接下來就可以測試我們的selenium是不是可以正常使用了,以一個簡單的例子開始:驅動瀏覽器打開百度。

from selenium import webdriver

url='https://www.baidu.com/'
browser=webdriver.Chrome()
browser.get(url)

如果到這里都沒有問題的話,就已經可以開始進行下一步了。

2.相關步驟

2.1 引入相關模塊

首先導入本次爬蟲任務需要的相關庫:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

其中selenium.webdriver.common.by 主要用于搜尋網頁元素的id信息,用于定位按鈕、輸入框之類的元素,WebDriverWait主要是用于等待網頁響應完成,因為網頁沒有完全加載,就使用find_elements_by_**等方法,就會出現找不到對應元素的情況。

2.2 獲取信息

movies=browser.find_elements_by_class_name('movie-name-text')
  names=[]
  for item in movies:
    if item.text!='':
      names.append(item.text)

其中find_elements_by_class_name就是通過查找class_name來鎖定影片名稱這個信息。

審查元素后右鍵即可Copy這個元素的JS path,selector等信息,可以鎖定這個元素及其類似的其他元素的信息。以‘霸王別姬'這部影片為例,他的selector就是#content > div > div.article > div.movie-list-panel.pictext > div:nth-child(1) > div > div > div.movie-name > span.movie-name-text > a
那么就可以用下面的代碼來鎖定影片名稱。

movies=browser.find_elements_by_class_name('#content > div > div.article > div.movie-list-panel.pictext > div:nth-child(1) > div > div > div.movie-name > span.movie-name-text > a')

2.3 設置等待時間

前面已經說過,如果頁面還沒有完全加載出,我們就進行元素的查找,返回的很可能是空列表,所以我們需要設置等待時間。
這里就涉及到顯示等待和隱式等待的區別。

2.3.1 顯式等待
每隔一段時間檢測一次當前頁面元素是否存在,如果超過設置時間檢測不到則拋出異常(TimeoutException)代碼格式:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

2.3.2 隱式等待
隱式等待是通過一定的時長等待頁面上某個元素加載完成。如果超出了設置的時長元素還沒有被加載,則拋出NoSuchElementException異常。
操作如下:implicitly_wait()
當使用了隱式等待執行測試的時候,如果 WebDriver沒有在 DOM中找到元素,將繼續等待,超出設定時間后則拋出找不到元素的異常換句話說,當查找元素或元素并沒有立即出現的時候,隱式等待將等待一段時間再查找 DOM,默認的時間是0,一旦設置了隱式等待,則它存在整個 WebDriver 對象實例的聲明周期中,隱式的等到會讓一個正常響應的應用的測試變慢,它將會在尋找每個元素的時候都進行等待,這樣會增加整個測試執行的時間。我們這里使用的就是隱式等待。

def get_page():
  browser.implicitly_wait(10)
  for i in range(50):
    time.sleep(0.3)
    browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    print('正在下滑第{}次'.format(i))
    print('-------------')
  #time.sleep(10)
  print("*****請等待幾秒*****")
  time.sleep(10)
  when=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#content > div > div.article > div.movie-list-panel.pictext > div:nth-child(380) > div > a > img')))

2.3.3 強制等待(補充)
強制等待就是使用python自帶的time模塊,設置等待時間,操作如下:time.sleep(time)一般可以用強制等待來限制計算機頻繁訪問目標鏈接導致驗證問題。

2.4 頁面自動下滑

頁面下滑過程比較簡單,不多贅述。其實現過程如下:

browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')#下滑操作

2.5 保存文件

爬取出的數據是列表形式,使用pandas的to_csv方法就可以保存到本地了。

rate,miscs,actor_list,ranks,playable_sign,names=get_page()
  datas=pd.DataFrame({'names':names,'rank':ranks,'分類':miscs,'評分':rate})
  try:
    datas.to_csv('機器學習\爬蟲\douban_0327.csv',encoding='utf_8_sig')
    print("保存成功")
    print(datas)

3.完整代碼

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import pandas as pd
import time

url='https://movie.douban.com/typerank?type_name=愛情片type=13interval_id=100:90action='
options=webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
options.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"')
browser=webdriver.Chrome()
browser.get(url)
wait=WebDriverWait(browser,10)
def get_page():
  browser.implicitly_wait(10)
  for i in range(50):
    time.sleep(0.3)
    browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')#下滑操作
    print('正在下滑第{}次'.format(i))
    print('-------------')
  #time.sleep(10)
  print("*****請等待幾秒*****")
  time.sleep(10)
  when=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#content > div > div.article > div.movie-list-panel.pictext > div:nth-child(380) > div > a > img')))
#-----------------------------------------------------------------
  movies=browser.find_elements_by_class_name('movie-name-text')
  names=[]
  for item in movies:
    if item.text!='':
      names.append(item.text)
  print("爬取成功")
  print(len(names))
#---------------------------------------------------------------
  playables=browser.find_elements_by_class_name('playable-sign')
  playable_sign=[]
  for sign in playables:
    if sign.text!='':
      playable_sign.append(sign.text)
  print('爬取成功')
  print(len(playable_sign))
#------------------------------------------------------------
  rank_names=browser.find_elements_by_class_name('rank-num')
  ranks=[]
  for rank in rank_names:
    if rank.text!='':
      ranks.append(rank.text)
  print('爬取成功')
  print(len(ranks))
#---------------------------------------------------------
  actors=browser.find_elements_by_class_name('movie-crew')
  actor_list=[]
  for actor in actors:
    if actor.text!='':
      actor_list.append(actor.text)
  print('爬取成功')
  print(len(actor_list))
#----------------------------------------------------------
  clasic=browser.find_elements_by_class_name('movie-misc')
  miscs=[]
  for misc in clasic:
    if misc.text!='':
      miscs.append(misc.text)
  print('爬取成功')
  print(len(miscs))
#-----------------------------------------------------------
  rates=browser.find_elements_by_class_name('movie-rating')
  rate=[]
  for score in rates:
    if score.text!='':
      rate.append(score.text)
  print('爬取成功')
  print(len(rate))
#-----------------------------------------------------------
  '''
  links=browser.find_elements_by_class_name('movie-content')
  for link in links:
    link_img=link.get_attribute('data-original')
    print(link_img)
  '''
  return rate,miscs,actor_list,ranks,playable_sign,names

if __name__ == "__main__":
  rate,miscs,actor_list,ranks,playable_sign,names=get_page()
  datas=pd.DataFrame({'names':names,'rank':ranks,'分類':miscs,'評分':rate})
  try:
    datas.to_csv('機器學習\爬蟲\douban_0327.csv',encoding='utf_8_sig')
    print("保存成功")
    print(datas)
  except:
    print('保存失敗')

到此這篇關于詳解使用Selenium爬取豆瓣電影前100的愛情片相關信息的文章就介紹到這了,更多相關Selenium爬取豆瓣電影內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python Selenium爬取內容并存儲至MySQL數據庫的實現代碼
  • Python使用Selenium+BeautifulSoup爬取淘寶搜索頁
  • Scrapy基于selenium結合爬取淘寶的實例講解
  • python爬蟲系列Selenium定向爬取虎撲籃球圖片詳解
  • Python使用Selenium爬取淘寶異步加載的數據方法
  • scrapy與selenium結合爬取數據(爬取動態網站)的示例代碼
  • 詳解python selenium 爬取網易云音樂歌單名
  • Python selenium爬取微信公眾號文章代碼詳解
  • java+selenium爬取圖片簽名的方法
  • Python selenium爬取微博數據代碼實例

標簽:內江 廊坊 拉薩 亳州 綿陽 渭南 黔東 興安盟

巨人網絡通訊聲明:本文標題《詳解使用Selenium爬取豆瓣電影前100的愛情片相關信息》,本文關鍵詞  詳解,使用,Selenium,爬取,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解使用Selenium爬取豆瓣電影前100的愛情片相關信息》相關的同類信息!
  • 本頁收集關于詳解使用Selenium爬取豆瓣電影前100的愛情片相關信息的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 色综合久久中文字幕口爆深喉 | 文枫揉捏柔佳乳峰的小说叫什么| 国产一级簧片| 久久精选视频| 久久免费看视频| 51吃瓜今日吃瓜必吃胖猫| 狠狠色综合久色aⅴ一区| 穿裙子不让穿内裤小黄文| 国产精品盗摄?偷窥盗摄| 美女app视频免费软件| 天天色综合色| 势不可挡柴鸡蛋浴室做尿| 在线视频播放大全| 篮球队生被C到合不拢腿H视频 | 四虎永久在线精品免费视频AV| 国产自在自线2021| 韩国羞羞动漫| 辽源市| 中国白毛老头性xxxxx| 娇妻随军被cao成sao浪贱小说| 丰满少妇在线观看网站| 日本高清专区一区二无线| 午夜伦理伦理电影院| 大胸的丰满老师HD| 少妇无套高潮一二三区| 国产社区在线| 锕锕锕锕好大不要不要| 不许穿内裤随时挨c调教h苏绵 | chinesehihi国产| 先锋影音va中文资源亚洲| 国产欧美日韩精品丝袜高跟鞋| 精品videossex国产双性人| 想放进来的话就努力吧15话| 亚洲欧美4444kkkk| 欧美精品无播放器在线播放| free×12性欧美sex| 欧美特黄a级| 国产精品福利在线观看秒播| 久久97精品国产综合色| 人妻亂伦中文字幕| 毛片大全高清免费|