【Python爬蟲(chóng)】- 陽(yáng)光電影網(wǎng)國(guó)內(nèi)電影資源抓取

目錄


一萨咳、 爬蟲(chóng)的邏輯
二弛随、XPath 爬取網(wǎng)站的數(shù)據(jù)
三、函數(shù)封裝
四塘娶、運(yùn)行結(jié)果

一纹坐、 爬蟲(chóng)的邏輯


作業(yè)內(nèi)容是抓取陽(yáng)光電影網(wǎng)的下載鏈接:也就是「國(guó)內(nèi)電影」標(biāo)簽頁(yè)面下枝冀,第一頁(yè)至第七頁(yè)的電影的所有下載鏈接。

先看看網(wǎng)站頁(yè)面之間的關(guān)系:

網(wǎng)站主頁(yè) -> 導(dǎo)航欄 -> 國(guó)內(nèi)電影頁(yè)(點(diǎn)擊標(biāo)簽?zāi)J(rèn)進(jìn)入第一頁(yè))
-> 具體電影頁(yè)面 -> 迅雷下載鏈接

整體的思路:

  • 先獲取國(guó)內(nèi)電影頁(yè)面第一頁(yè)的源代碼耘子;
  • 將源代碼的字符串類型轉(zhuǎn)換為 selector 對(duì)象果漾,把它的值賦予變量 HTML;
  • 用 XPath 提取出變量 html 中的文本谷誓,并把它放入一個(gè)列表中绒障;
  • 提取的文本有兩個(gè)部分,一個(gè)部分是國(guó)內(nèi)電影頁(yè)面的第一頁(yè)的所有影片標(biāo)題片林,另一部分是第一頁(yè)所有影片標(biāo)題的 URL(點(diǎn)擊它可進(jìn)入具體電影頁(yè)面)端盆,我們將它賦值給變量 new_html;
  • 用 XPath 提取出變量 new_html 中的文本费封,并把它放入一個(gè)列表中焕妙;
  • 這一次提取的文本包括下載鏈接;
  • 把列表的文本打印出來(lái)弓摘,文本就是電影信息和下載鏈接焚鹊;
  • 修改獲取范圍為第一頁(yè)至第七頁(yè)的源代碼,再打印一次韧献;

二末患、XPath 爬取網(wǎng)站的數(shù)據(jù)


第一次打印(運(yùn)行結(jié)果在文章末尾):

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 導(dǎo)入 requests 模塊锤窑,lxml etree
import requests
from lxml import etree

# 我們先獲取國(guó)內(nèi)電影頁(yè)面的第一頁(yè)璧针。
# 將標(biāo)簽「國(guó)內(nèi)電影」的第一頁(yè)的 URL 粘貼在' '中,并賦值給變量url
url = 'http://www.ygdy8.com/html/gndy/china/list_4_1.html'
res = requests.get(url)
# # 在網(wǎng)頁(yè)的源碼搜索 charset 可以發(fā)現(xiàn)網(wǎng)頁(yè)編碼為 gb2312渊啰,省略這一步會(huì)出現(xiàn)亂碼的情況
res.encoding = 'gb2312'
# 如果打印源碼的時(shí)候出現(xiàn)報(bào)錯(cuò)探橱,可以把 text 轉(zhuǎn)換為 content,這一步是需要調(diào)試的
html = res.text
# 測(cè)試:print(html)
selector = etree.HTML(html)
# 因?yàn)樵?table 標(biāo)簽下绘证,所以:
infos = selector.xpath('//table[@class="tbspan"]//a[@class="ulink"]')
# 測(cè)試:print(len(infos))


# 循環(huán)隧膏,打印
# 第一次打印的結(jié)果發(fā)現(xiàn)運(yùn)行結(jié)果是列表,所以第二次打印時(shí)在列表后面附上[0]
# 第二次打印發(fā)現(xiàn):
# movie_url 的值是 /html/gndy/dyzz/20170806/54699.html嚷那,
# 看起來(lái)并不是一個(gè)完整的 URL胞枕,可以進(jìn)入電影名頁(yè)面看看
# 電影名頁(yè)面URL:
# http://www.ygdy8.com/html/gndy/dyzz/20170806/54699.html
# 所以在movie_url值里加上了 'http://www.ygdy8.com' + ,
for info in infos:
    movie_url = 'http://www.ygdy8.com' + info.xpath('@href')[0]
    movie_name = info.xpath('text()')[0]
    # print(movie_url, movie_name)

    new_url = movie_url
    new_res = requests.get(new_url)
    new_res.encoding = 'gb2312'
    new_html = new_res.text
    new_selector = etree.HTML(new_html)
    new_infos = new_selector.xpath('//td[@style="WORD-WRAP: break-word"]/a')
    
    
    for new_info in new_infos:
        new_movie_url = new_info.xpath('@href')[0]
        new_movie_name = new_info.xpath('text()')[0]
        print(movie_url, movie_name, new_movie_url, new_movie_name)

上面的代碼成功獲取國(guó)內(nèi)電影頁(yè)面第一頁(yè)的所有電影名稱和下載鏈接魏宽,接下來(lái)我們將函數(shù)封裝腐泻,修改獲取范圍為第一頁(yè)至第七頁(yè)的源代碼决乎,再打印一次。

三贫悄、函數(shù)封裝


第二次打尤鹎(運(yùn)行結(jié)果在文章末尾):

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
from lxml import etree

# 封裝函數(shù)的寫(xiě)法

def get_movie_url(url):
    res = requests.get(url)
    res.encoding = 'gb2312'
    html = res.text
    selector = etree.HTML(html)
    infos = selector.xpath('//table[@class="tbspan"]//a[@class="ulink"]')
    for info in infos:
        movie_url = 'http://www.ygdy8.com' + info.xpath('@href')[0]
        movie_name = info.xpath('text()')[0]
        get_movie_soure(movie_url, movie_name)

def get_movie_soure(movie_url, movie_name):
    new_url = movie_url
    new_res = requests.get(new_url)
    new_res.encoding = 'gb2312'
    new_html = new_res.text
    new_selector = etree.HTML(new_html)
    new_infos = new_selector.xpath('//td[@style="WORD-WRAP: break-word"]/a')
    for new_info in new_infos:
        new_movie_url = new_info.xpath('@href')[0]
        new_movie_name = new_info.xpath('text()')[0]
        print('電影名稱:%r,下載鏈接:%r' % (movie_name, new_movie_url))

if __name__ == '__main__':
    base_url = 'http://www.ygdy8.com/html/gndy/china/list_4_%s.html'

    for page in range(1, 8):
        url = base_url %str(page)
        print('第%d頁(yè)' % page, '頁(yè)面鏈接:', url)
        get_movie_url(url)

四窄坦、運(yùn)行結(jié)果


第一次運(yùn)行結(jié)果

第二次運(yùn)行結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凳寺,隨后出現(xiàn)的幾起案子鸭津,更是在濱河造成了極大的恐慌,老刑警劉巖肠缨,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逆趋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡晒奕,警方通過(guò)查閱死者的電腦和手機(jī)闻书,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)脑慧,“玉大人魄眉,你說(shuō)我怎么就攤上這事∶铺唬” “怎么了坑律?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)囊骤。 經(jīng)常有香客問(wèn)我晃择,道長(zhǎng),這世上最難降的妖魔是什么也物? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任宫屠,我火速辦了婚禮,結(jié)果婚禮上滑蚯,老公的妹妹穿的比我還像新娘浪蹂。我一直安慰自己,他們只是感情好膘魄,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布乌逐。 她就那樣靜靜地躺著,像睡著了一般创葡。 火紅的嫁衣襯著肌膚如雪浙踢。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天灿渴,我揣著相機(jī)與錄音洛波,去河邊找鬼胰舆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蹬挤,可吹牛的內(nèi)容都是我干的缚窿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼焰扳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼倦零!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起吨悍,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扫茅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后育瓜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體葫隙,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年躏仇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恋脚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡焰手,死狀恐怖糟描,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情册倒,我是刑警寧澤蚓挤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站驻子,受9級(jí)特大地震影響灿意,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜崇呵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一缤剧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧域慷,春花似錦荒辕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至叠骑,卻和暖如春李皇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宙枷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工掉房, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茧跋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓卓囚,卻偏偏與公主長(zhǎng)得像瘾杭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哪亿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,280評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)粥烁、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,119評(píng)論 4 61
  • I was so excited that I couldn’t say a word. 5. so that.....
    小綠植物閱讀 784評(píng)論 0 0
  • (作者:般若多光) 云做的鏡子里住著眾生 深處是我前世的翅膀 和隔世的菩提 今生我是它的路人 打馬經(jīng)過(guò) 羊皮水袋盛...
    炑焚燊大祭司閱讀 663評(píng)論 37 5