爬取電影天堂的電影資訊
阿新 • • 發佈:2019-01-08
今天做了一早上的爬蟲,爬去電影天堂的電影連結。使用了正則表示式。總的來說來不錯。上程式碼。已經實現的功能:
1.抓取電影釋出的日期
2.電影的名字
3.電影的年代
4.電影的產地
5.電影的類別
6:電影的字幕
目前還在考慮,需不需要這麼多的欄位。
也還遇到一些問題,比如 想抓取豆瓣評分。但是電影天堂的網頁佈局,有些不一樣。很明顯是兩個人寫的。。 尷尬!!
想要達到的預期目標,抓取電影名字,類別,海報,下載地址。
這些都基本上都完成了。
上一段程式碼:
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
from time import sleep
import re
moviesLinks = set() #全域性變數,來儲存主網頁的連結
def getLinks(pageUrl):
global moviesLinks
html = urlopen(pageUrl)
bs4 = BeautifulSoup(html,"xml")
#print(bs4.prettify())
for link in bs4.findAll("a",{"href" :re.compile("/html/gndy/+[a-z]+/[0-9]+/[0-9]+\.html")}): #正則表示式選取電影連結(過濾掉遊戲下載連結,動漫連結,綜藝連結)
if link.attrs['href'] not in moviesLinks:
newLink = link.attrs['href']
print(newLink)
moviesLinks.add(newLink)
getPageImformation(newLink)
def getPageImformation (pageUrl):
url = 'http://www.dytt8.net/'+pageUrl
html = urlopen(url)
bs4 = BeautifulSoup(html,"xml")
try:
date = bs4.find("div",{"class":"co_content8"}).ul.get_text().strip() #此時date還含有其他的東西
date = date.split('\n')[0] #這裡就已經處理好了
except AttributeError:
print("一部分網頁不是電影介紹的網頁而已,不用擔心")
try:
poster = bs4.find("div",{"id":"Zoom"}).img.attrs['src']
print(poster)
except AttributeError:
print('一部分網頁沒有海報而已,不用擔心')
#這部分要進行 一些訊息處理了(這網站寫的 six six)
try:
name = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[1][4:].strip() #名字的處理
except Exception:
print("一部分網頁不是電影介紹的網頁而已,不用擔心")
try:
time = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[3][4:].strip()
except Exception:
print("一部分網頁不是電影介紹的網頁而已,不用擔心")
try:
origin = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[4][4:].strip()
print(origin)
except Exception:
print("一部分網頁這個屬性而已,不用擔心")
try:
category = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[5][4:].strip()
print(category)
except Exception:
print("一部分網頁這個屬性而已,不用擔心")
print("--------------------------------\n")
try:
downloadLink = bs4.find("td",{"bgcolor":"#fdfddf"}).a.get_text()
print(downloadLink)
except Exception:
print("一些頁面不是影片介紹的頁面而已,不用擔心")
getLinks('http://www.dytt8.net/')
# 3是年代
# 4是產地
# 5是類別
# 6是語言
# 7是字幕
# 8IMDb評分
#