吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4430|回复: 9
收起左侧

[Python 转载] 利用urllib和xpath 爬取电影播放地址

  [复制链接]
E飞翔 发表于 2019-3-7 00:19
本帖最后由 E飞翔 于 2019-3-7 00:33 编辑


好久没有写代码了,今天闲着就来写写这个。

若写的不好请大神指点,谢谢!

[Python] 纯文本查看 复制代码
from urllib import request
from lxml import etree
from pprint import pprint

class GetMoviePlay:

    """
        # 取电影标题       '//*[@id="data_list"]/tr/td[1]/a'
        # 取电影页面链接    '//*[@id="data_list"]/tr/td[1]/a/@href'
        # 取电影类型       '//*[@id="data_list"]/tr/td[2]/a'
        # 取电影地区       '//*[@id="data_list"]/tr/td[3]/p/font'
        # 取连载状态       '//*[@id="data_list"]/tr/td[4]/span/font'
        # 取更新时间       '//*[@id="data_list"]/tr/td[5]/font'
        # 取当前页码详情    '/html/body/div[4]/div[1]/div/text()[1]'

        # 获取真实链接 /html/body/div[4]/div[2]/div/div/ul/li[2]/text()
    """

    def __init__(self,page):
        self.__url = 'http://yongjiuzy.cc/?m=vod-type-id-6-pg-%d.html' % page
        self.__name = (
            '//*[@id="data_list"]/tr/td[1]/a/text()',
            '//*[@id="data_list"]/tr/td[1]/a/@href',
            '//*[@id="data_list"]/tr/td[2]/a/text()',
            '//*[@id="data_list"]/tr/td[3]/p/font/text()',
            '//*[@id="data_list"]/tr/td[4]/span/font/text()',
            '//*[@id="data_list"]/tr/td[5]/font/text()',
            '/html/body/div[4]/div[1]/div/text()[1]',
            '/html/body/div[4]/div[1]/div/div[2]/li[1]/text()[2]',
            '/html/body/div[4]/div[2]/div/div/ul/li[2]/text()'
        )

    @property
    def movie_info_dict(self):
        res = request.Request(self.__url)
        response = request.urlopen(res).read()
        response = etree.HTML(response)
        # 取电影标题
        m_cont_list_tmp = response.xpath(self.__name[0])
        m_cont_list = []

        # 解析电影标题,只取奇数的主标题
        for i in range(len(m_cont_list_tmp)):
            if i % 2 == 0:
                m_cont_list.append(m_cont_list_tmp[i])

        # 取电影页面链接
        m_url_list = response.xpath(self.__name[1])

        # 拼接url
        for i in range(len(m_url_list)):
            m_url_list[i] = 'http://yongjiuzy.cc/' + m_url_list[i]

        # 取电影类型
        m_type_list = response.xpath(self.__name[2])

        # 取电影地区       '//*[@id="data_list"]/tr/td[3]/p/font'
        m_city_list = response.xpath(self.__name[3])

        # 取连载状态       '//*[@id="data_list"]/tr/td[4]/span/font'
        m_state_list = response.xpath(self.__name[4])

        # 取更新时间       '//*[@id="data_list"]/tr/td[5]/font'
        m_time_list = response.xpath(self.__name[5])

        # 取当前页码详情    '/html/body/div[4]/div[1]/div/text()[1]'
        m_this_page = response.xpath(self.__name[6])

        return {'context':m_cont_list,
                'url':m_url_list,
                'type':m_type_list,
                'city':m_city_list,
                'state':m_state_list,
                'time':m_time_list,
                'thisPage':m_this_page
                }



    def getMovieTrue(self,url):
        res = request.Request(url)
        response = request.urlopen(res).read()
        response = etree.HTML(response)

        # 电影名称      /html/body/div[4]/div[1]/div/div[2]/li[1]/text()[2]
        m_true_context = response.xpath(self.__name[7])

        # 获取真实链接 /html/body/div[4]/div[2]/div/div/ul/li[2]/text()
        m_true_url = response.xpath(self.__name[8])

        # 返回列表数据
        return [m_true_context[0],m_true_url[0]]


if __name__ == '__main__':

    a = GetMoviePlay(1)   # 初始化一个页码

    # 返回了一堆数据,其实我就只要了url
    url = a.movie_info_dict['url']

    for i in range(len(url)):
        info = a.getMovieTrue(url[i])
        pprint(info)



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Northcarp 发表于 2019-3-7 02:27
学习了,收听下。
sdaza 发表于 2019-3-7 06:43 来自手机
6080021 发表于 2019-3-17 20:49
runfog 发表于 2019-3-17 22:11
xpath不错的
春雨千寻 发表于 2019-3-18 12:38
学习学习
newbie2019 发表于 2019-5-13 18:37
不错不错,跟着大大的源码学习学到了不少知识。感谢分享技术。
p鹏程万里 发表于 2019-5-25 22:49
学习使我快乐
天空宫阙 发表于 2019-5-27 09:07
xpath的选择器全写在对象的属性里有什么好处吗?是为了美观?突出本贴的标题?还是别的什么?
神咲 发表于 2019-5-27 09:59
测试下~~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 10:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表