Python爬取電影天堂指定電視劇集或者電影

2022-01-15 02:30:52 字數 3179 閱讀 8771

一位高人曾經說過,想爬取資料,要先分析**

今天我們爬取電影天堂,有好看的美劇我在上面都能找到,算是很全了。

這個**的廣告出奇的多,用過都知道,點一下搜尋就會彈出個視窗,伴隨著滑稽的**,貪玩藍月?

通過python,我們可以避免廣告,直接拿到我們要的東西

我用的是火狐瀏覽器,按f12開啟開發者工具,選擇網路

按照正常的操作順序,其實python就是在模擬人進行一些網頁操作,我們只不過通過python解放自己的雙手

在搜尋框輸入「傲骨賢妻」,當然你輸入其他的電視劇集名稱也可以,檢視開發者工具

聰明的你肯定一下就看出來了,對,就是第乙個請求,點開

檢視引數,keyword中文意思是關鍵字,我們可以得知,「傲骨賢妻」被encode成了這種看不懂的東西 ,引數kwtype和searchtype感覺沒什麼用,具體我也不知道幹啥的,我們模擬請求的時候,把它倆加上,防止出問題

我也不反對。我先建立乙個film.py,用來放置電視劇集名。這是乙個好習慣,有些時候安全性比較高的資料專門放在乙個檔案裡,進行加密,或者github忽略不提交,可以避免不必要的麻煩

#

coding=utf-8

filmname = '

傲骨賢妻

'

建立_init_.py

匯入所需要的包 urlib2,re,film,注釋已經很清楚了,我來解釋下%(film.filmname).decode("utf-8").encode('gb2312'),%是取出我存在film.py裡面的值,為什麼要用decode在encode呢?右鍵檢視頁面源**,你會發現,電影天堂

並不是utf-8編碼,而是gb2312,所以我們要encode呀,剛才我們看到keyword是看不懂的火星文,我們現在知道了,它其實是gb2312編碼,所以這裡我們把filmname先解碼成utf-8,變成能看懂的「傲骨賢妻「,再編碼成gb2312

電影天堂後台所能看懂的「傲骨賢妻」,ok,這樣so.php就可以執行我們的查詢操作,kwtype=0&searchtype=titile帶上吧,反正也不累。

關於正則語法,是python基礎,可以去慕課網學習,我就不解釋了。我們目的是看到html裡面超連結的特點,進行正則匹配

#

coding=utf-8

import

urllib2

import

film

import

reopener = urllib2.build_opener()#

構建乙個handler物件

defsearch():

req = urllib2.request('

')#so.php請求引數將中文進行了url.encode(),所以需要將中文encode('gb2312')處理

req.add_data('

kwtype=0&searchtype=title&keyword=%s

' %(film.filmname).decode("

utf-8

").encode('

gb2312'))

html = opener.open(req).read().decode('

gb2312')

reg = r'

/html/tv/oumeitv/[0-9]/[0-9a-za-z.]

'return

re.findall(reg,html)

search()

我們接著對**進行分析 ,我們剛才搜尋完成

現在介面是這樣,我們暫時只取第乙個,也就是「2014主打美劇《傲骨賢妻》第六季」

廣告出奇的多。。。還好我禁用了flash

這時候開啟idea,寫入**。list獲取到search結果,因為search是兩個,為了看到效果,我沒有遍歷,只取第乙個搜尋結果,即2014主打劇...,這裡正則用u是指unicode string,因為我們這裡存在中文

def

opensearchresult():

list =search()

req = urllib2.request('

'+list[0])

html = opener.open(req).read().decode('

gb2312

','ignore')

reg = u'

ftp://[a-z0-9]+:[a-z0-9]+@[a-z0-9]+.[a-z].[a-z]:[\d]/[\u4e00-\u9fa5][\w]*\[陽光電影www.ygdy8.com\][\u4e00-\u9fa5]*[\d]+[\u4e00-\u9fa5]\[[\u4e00-\u9fa5]+\].rmvb

'return

re.findall(reg,html)

opensearchresult()

然後再用list把opensearchresult遍歷出來,unicode string必須遍歷才能看到中文

我把filename換成行屍走肉

這個是正則基本語法

這個是該部落格的原始碼:

Python爬取電影天堂指定電視劇集或者電影

一位高人曾經說過,想爬取資料,要先分析 今天我們爬取電影天堂,有好看的美劇我在上面都能找到,算是很全了。這個 的廣告出奇的多,用過都知道,點一下搜尋就會彈出個視窗,伴隨著滑稽的 貪玩藍月?通過python,我們可以避免廣告,直接拿到我們要的東西 我用的是火狐瀏覽器,按f12開啟開發者工具,選擇網路 ...

爬取電影天堂

分析每頁的url,可以得到規律是 第t頁的url為 於是可以先分析第一頁,然後對頁數進迴圈,就可得到所有最新電影的詳細資訊。from lxml import etree headers defget movie url url resp requests.get url,headers header...

Python爬取電影天堂資源

from urllib import request,parse from lxml import etree import requests,re url1 req1 request.request url1 response1 request.urlopen req1 html1 respons...