一、解析电影url
请求构造出的每个电影菜单的分页url,解析出每个电影url
二、xpath解析电影资源
对解析出来的电影url进行请求,解析出最终的电影名称 电影下载地址
三、对代码进行分装成函数
# -*- coding: utf-8 -*-
#爬虫阳光电影网 首页菜单栏解析
from lxml import etree
import requests
url='http://www.ygdy8.com'
req = requests.get(url)
status_code = req.status_code
#print(status_code)
#网页解码方式
req.encoding='gb2312'
#获取网页源码 用html变量接收 text或content
html = req.text
#print(html)
selector = etree.HTML(html)
url_list=[] #定义一个url列表
#提取菜单栏url
#infors = selector.xpath('//div[@id="menu"]/div[@class="contain"]/ul/li/a')
infros = selector.xpath('//div[@id="menu"]/div[@class="contain"]/ul/li[position()<10]/a')
#看出有多少个标签
#print(len(infors))
for info in infros:
menu_url_1=info.xpath('@href')
menu_name_1=info.xpath('text()')
#print(menu_name[0],menu_url[0])
if len(menu_name_1)==0:
pass
elif menu_url_1[0]=='/html/gndy/index.html':
pass
else:
menu_url=url+menu_url_1[0]#menu_url=/html/gndy/dyzz/index.html
menu_name=menu_name_1[0]
#print(menu_name,menu_url)
req2=requests.get(menu_url)
req2.encoding='gb2312'
html2=req2.text
#print(html2)
selector2 = etree.HTML(html2)
page_total=selector2.xpath('//div[@class="co_content8"]/div[@class="x"]//text()')[1].split('/')[0].replace('共',' ').replace('页',' ')
#print(len(page_total),page_total)
# 第一次
#list_id=selector2.xpath('//div[@class="co_content8"]/div[@class="x"]//a/@href')[0]#.split('.')[0].split('_')[1]
# print(len(list_id),list_id)
# http: // www.ygdy8.com / html / gndy / dyzz / index.html
# http://www.ygdy8.com/html/gndy/dyzz/list_23_2.html
# http: // www.ygdy8.com / html / zongyi2013 / index.html 菜单栏
# http: // www.ygdy8.com / html / zongyi2013 / list_99_2.html 分页数 要用list_99_2.html替换index.html
#第二次
list_id = selector2.xpath('//div[@class="co_content8"]/div[@class="x"]//a/@href')[0].replace('2.html','')
#replace这里替换的''里面不能加空格否则right_url会有多余空格
#print(list_id)
for i in range(1,int(page_total)+1):#int(page_total)循环范围不包括page_total,要+1
right_url=list_id + str(i)
fenye_url=menu_url.replace('index',right_url)
#print(menu_url, right_url, fenye_url)
url_list.append(fenye_url)
#print(len(url_list))
#请求下载各分页url页面,解析出电影url
for fenye_url in url_list:
req3=requests.get(fenye_url)
req3.encoding = 'gb2312'
html3 = req3.text
selector3 = etree.HTML(html3)
#定位分页的电影单页
infos3=selector3.xpath('//div[@class="co_content8"]//a[@class="ulink"]/@href')
for info3 in infos3:
#/html/gndy/dyzz/20170725/54594.html
#http://www.ygdy8.com/html/gndy/dyzz/20170725/54594.html
moive_url='http://www.ygdy8.com'+str(info3)
#print(fenye_url,move_url)
req4 = requests.get(moive_url)
req4.encoding = 'gb2312'
html4 = req4.text
selector4 = etree.HTML(html4)
#定位电影名称
moive_name=selector4.xpath('//div[@class="title_all"]/h1/font/text()')[0]
#print(moive_name)
#定位电影下载地址
moive_source=selector4.xpath('//td[@style="WORD-WRAP: break-word"]/a/@href')[0]
print(fenye_url,moive_url,moive_name,moive_source)