1. 程式人生 > 其它 >python 爬蟲電影天堂簡單示例

python 爬蟲電影天堂簡單示例

前   言

1. 爬蟲簡介

  在一些實際專案操作過程中,可能會經常遇到爬蟲的需求,然後將獲得的資料進行處理或寫入資料庫。

  爬蟲業務中經常設計到幾個開源庫,requests,bs4,pandas,pymysql

  requests是用來根據url獲取相關的網頁資訊;

  bs4主要是用來進行網頁的解析;

  pandas用來處理一些資料;

  pymysql主要用來操作資料庫,將必要的資料存入到目標資料庫。

2. 爬蟲簡單示例 

  本次demo主要是以大家常用來下載電影的 電影天堂 網站來簡單地實操一下爬蟲業務,目的:獲取電影天堂中 2022新片精品 中前7頁的電影網址和名稱。

  

  2.1 確定相關的url

    我們在點選了更多這個按鈕,並隨便點選了第2頁和第1頁,發現他們的url除了頁碼不一樣,其他部分都是一樣的,如下:

    https://m.dytt8.net/html/gndy/dyzz/list_23_1.html  即.html 前面的數字代表當前的頁數。所以我們每一頁的url可以為

    URL = "https://m.dytt8.net/html/gndy/dyzz/list_23_{}.html" ,然後通過format函式和for迴圈遍歷每一頁。

  2.2 程式碼編寫   

  import requests
  from bs4 import BeautifulSoup

  URL = "https://m.dytt8.net/html/gndy/dyzz/list_23_{}.html"
  BASE_URL = "https://m.dytt8.net/"


  def get_movie(url):
  response = requests.get(url)
  # print(response.headers)
  # print(response.content)
  text = response.content.decode("gbk")
  return text


  def parser_movie(text):
  parser_after = BeautifulSoup(text, "html.parser")
  return parser_after


  def find_movie(target_movie):
  movie = target_movie.find("div", class_="co_content8")
  back_movie = movie.find_all("a", class_="ulink")
  for each in back_movie:
  each_movie_url = each.get("href")
  each_movie_name = each.text
  print(BASE_URL + each_movie_url, each_movie_name)


  if __name__ == "__main__":
  for i in range(1, 8):
  movie_final = get_movie(URL.format(i))
  parser_final = parser_movie(movie_final)
  find_movie_final = find_movie(parser_final)
  print("this is white line...........................................")

  1. get_movie函式主要是用來獲取最原始未經處理的html資料,這裡我們可以通過print(response.content)來獲取header格式,如下圖所示:

   可以知道,是gpk加解密的格式,那麼我們可以通過 text = response.content.decode("gbk") 來解密原生的html資料,可以避免亂碼的出現。

  2. 在拿到解密後的html資料後,可以通過bs4中的BeautifulSoup模組來解析html text格式的資料並以html的標準格式存在,即類似於網站頁面,通過

  開發工具進取的原始div等頁面格式,方便瀏覽資料的層次和格式並獲取需要的資料。

  3. 拿到類似開發工具頁面的html資料後,就可以通過find或者find_all來獲取某一個層級的內容了。在這裡我們想要獲取每一個電影的url以及名稱,通過

  對頁面的分析,發現它可以在"div", class_="co_content8" 下面 "a", class_="ulink"找到,通過get函式獲取url,通過text屬性獲取文字。

   2.3 執行主程式碼,獲取最終結果

   執行主程式,獲取最終的結果如下圖所示:

  

 結  語

   未完待續......