分析每頁的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...