爬取電影天堂

2021-09-12 22:05:12 字數 3175 閱讀 1257

分析每頁的url,可以得到規律是:第t頁的url為:

於是可以先分析第一頁,然後對頁數進迴圈,就可得到所有最新電影的詳細資訊。

from lxml import etree

headers=

defget_movie_url

(url)

: resp=requests.get(url,headers=headers)

text=resp.text

html=etree.html(text)

movie_urls = html.xpath(

"//td//a[@class='ulink']/@href"

)#定位到所有的td下class='ulink'的a標籤取出href屬性的值,返回的就是每個電影詳情頁的url

return movie_urls

#得到詳情頁的url之後,對詳情頁進行分析。

defparse_detail_pages

(url)

: resp = requests.get(url, headers=headers)

text = resp.content.decode(

"gbk"

)#詳情頁採取的gbk的編碼方式

html = etree.html(text)

zoom = html.xpath(

"//div[@id='zoom']")[

0]#得到zoom中所有的文字資訊

infos = zoom.xpath(

"//text()"

) movie=

#對infos列表進行迴圈,利用enumerate() 函式同時列出資料和資料下標

#startswith() 方法用於檢查字串是否是以指定子字串開頭,是返回 true,否則返回false

#strip()方法用於移除字串頭尾指定的字元(預設為空格或換行符)或字串行,str.strip()

去除首尾空格。該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。

for index,info in

enumerate

(infos)

:if info.startswith(

"◎片  名"):

name= info.replace(

"◎片  名",""

).strip(

) movie[

"名稱"

]=name

elif info.startswith(

"◎年  代"):

time= info.replace(

"◎年  代",""

).strip(

) movie[

"上映時間"

]= time

elif info.startswith(

"◎產  地"):

country = info.replace(

"◎產  地",""

).strip(

)elif info.startswith(

"◎類  別"):

class_name = info.replace(

"◎類  別",""

).strip(

) movie[

"類別"

]= class_name

elif info.startswith(

"◎字  幕"):

language = info.replace(

"◎字  幕",""

).strip(

) movie[

"語言"

]= language

elif info.startswith(

"◎主  演"):

actor = info.replace(

"◎主  演",""

).strip(

) actors =

[actor]

for x in

range

(index+1,

len(infos)):

actor=infos[x]

.strip(

)if actor.startswith(

"◎")

:break

movie[

"主演"

]=actors

elif info.startswith(

"◎簡  介"

) intro=infos[index+1]

.strip(

) movie[

"簡介"

]= intro

downloadurl=html.xpath(

"//font[@color='red']/a/@href"

) movie[

]=downloadurl

return movie

defget_movie_url

(url)

: resp=requests.get(url,headers=headers)

text=resp.text#如果出現亂碼的情況,可以寫成text= resp.content.decode('utf-8')

html=etree.html(text)

urls = html.xpath(

"//td//a[@class='ulink']/@href"

)return urls

defspider()

:#得到頁數的url

for i in

range(1

,8):

url =

""com_page_url = url.

format

(i) urls=get_movie_url(com_page_url)

#得到每個電影詳細介紹的url

print

("*"*20

,i,1

)for url in urls:

com_url =

""+ url

movie=parse_detail_page(com_url)

print

(movie)

spider(

)

python xpath爬取電影天堂

import requests from lxml import html base domain url html gndy dyzz list 23 1.html headers defspider base url html gndy dyzz list 23 html movies for ...

Python爬取電影天堂資源

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

Scrapy爬蟲爬取電影天堂

目標 建立專案 scrapy startproject 爬蟲專案檔案的名字 生成 crawlspider 命令 scrapy genspider t crawl 爬蟲名字 爬蟲網域名稱 終端執行 scrapy crawl 爬蟲的名字 python操作mysql資料庫操作 爬蟲檔案 coding ut...