電影爬取案例

2021-09-24 14:17:08 字數 2946 閱讀 4897

本次案例針對的是電影天堂上的電影,爬取所有電影的鏈結,以及每個鏈結對應的詳情頁。

整體思路是:封裝兩個 函式,用來獲取url,對url進行解析。

這個函式用來獲取每個頁面的url:

def get_detail_url(url):

response=requests.get(url,headers=headers)

# print(response.encoding)

text=response.text.encode('iso-8859-1').decode('gbk','ignore')

# print(text)

html=etree.html(text)

detail_urls=html.xpath("//table[@class='tbspan']//a/@href")

detail_urls=map(lambda url:base_domain+url,detail_urls)

return detail_urls

這個函式用來對每個電影的url進行解析:

def parse_detail_page(url):

movie={}

response=requests.get(url,headers=headers)

# text=response.content.decode('gbk')

text = response.text.encode('iso-8859-1').decode('gbk', 'ignore')

html=etree.html(text)

title=html.xpath("//div[@class='title_all']//font[@color='#07519a']/text()")[0]

movie['title']=title

zoome=html.xpath("//div[@id='zoom']")[0]

imgs=zoome.xpath(".//img/@src")

cover=imgs[0]

movie['cover'] = cover

if len(imgs)>1:

screenshot=imgs[1]

movie['screenshot']=screenshot

else:

movie['screenshot']=none

def parse_info(info,rule):

return info.replace(rule,'').strip()

infos=zoome.xpath(".//text()")

# print(type(infos))

for index, info in enumerate(infos):

# print(type(info))

# if info.startwith

if info.startswith("◎年  代"):

# info=info.replace("◎年  代","").strip()

info=parse_info(info,"◎年  代")

movie['year']=info

elif info.startswith("◎產  地"):

# info=info.replace("◎產  地","").strip()

info = parse_info(info, "◎產  地")

movie['country']=info

elif info.startswith("◎類  別"):

# info = info.replace("◎類  別", "").strip()

info = parse_info(info, "◎類  別")

movie['catagory'] = info

elif info.startswith("◎豆瓣評分"):

# info = info.replace("◎豆瓣評分", "").strip()

info = parse_info(info, "◎豆瓣評分")

movie['douban_rating'] = info

elif info.startswith("◎片  長"):

# info=info.replace("◎類  別","").strip()

info = parse_info(info, "◎片  長")

movie['duration']=info

elif info.startswith("◎導  演"):

info = parse_info(info, "導  演")

movie['director'] = info

elif info.startswith("◎主  演"):

info=parse_info(info,"◎主  演")

actors=[info]

for x in range(index+1,len(infos)):

actor=infos[x].strip()

if actor.startswith("◎"):

break

movie['actors']=actors

elif info.startswith("◎簡 介"):

for x in range(index+1,len(infos)):

profile=infos[x].strip()

movie['profile']=profile

download_url=html.xpath("//td[@bgcolor='#fdfddf']/a/@href")[0]

movie['download_url']=download_url

return movie

爬蟲 豆瓣電影爬取案例

直接上 僅供參考。目標爬取資料是某地區的 正在上映 部分的資料,如下圖 完整 如下 usr bin python coding utf 8 from lxml import etree import requests 目標 爬取豆瓣深圳地區的 正在上映 部分的資料 注意點 1 如果網頁採用的編碼方式...

Top100貓眼電影爬取案例

儲存請求頭的列表 ua list mozilla 5.0 compatible msie 9.0 windows nt 6.1 win64 x64 trident 5.0 net clr 2.0.50727 slcc2 net clr 3.5.30729 net clr 3.0.30729 medi...

爬取電影天堂

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