吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14343|回复: 43
收起左侧

[Python 转载] 用Python爬取某网站上的电影资源

  [复制链接]
zzzain46 发表于 2019-1-11 16:26
本帖最后由 PhilipZyy5012 于 2019-1-12 22:18 编辑

【故事背景】我是一个贫穷的学生,所以一般不开各大影视平台的VIP,想看最近的电影电视剧一般都是去公众号找资源的,最近我发现了一个公众号,他资源更新的还是挺快的,而且基本都是1080P画质以上的。
有我就在想我每次都要去搜索相应的片名,然后再去他的公众号对话窗口回复电影名,然后他给你一个超链接跳转到相应的页面,这样就比较繁琐,于是我就想着写一个爬虫来爬取他公众号对接的网页上的电影资源分享链接。
代码给在下面了。
【说明】
为了避免涉嫌推广,我已经将该公众号对接的url去掉了。在这里仅做爬虫代码分享,该写的注释我已经写了。由于我也只是一个初学Python的菜鸟,所以也是看了很多教程依葫芦画瓢写出来的东西。
由于我在学校学的语言是C#,做winform窗体比较方便,所以一直想用winform写个窗体然后调用这个python爬虫脚本,但是目前看来好像还是挺麻烦的。c#写爬虫我也还没怎么学,所以只能先这样子。
这次仅做初学者的技术分享,未来可能会做一个winform界面,方便大家直接爬取资源。
【协和研究所】这是我和我的小伙伴的团队名称

[Python] 纯文本查看 复制代码
import os.path
import openpyxl
import sys
import lxml
import re
import time
from webspider import WebSpider as w

if os.path.exists('电影资源爬取结果.xlsx'):
    print('爬取结果已存在,如需重新爬取,请手动删除旧文件并重新运行本程序!')
    sys.exit()
    
else:
    #创建结果表格并初始化
    excel = openpyxl.Workbook()
    ws = excel.active
    ws.title = 'result'
    ws['A1'] = '电影名'
    ws['B1'] = '下载链接'
    row = 1
        
url = 'http://????.cn/'
spider = w(url)
is_last_page = False
page = 0

while not is_last_page:
    page+=1
    print('正在下载第%d页...'%page)
    html = spider.download_html(url)

    #提取电影名和下载链接
    for each in spider.selector(html,'div[class*="homeposte"]'):
        row += 1
        ws['A%d'%row] = each.cssselect('h2 a')[0].text
        ws['B%d'%row] = each.cssselect('p')[0].text

    for each in spider.selector(html,'nav[class*="pagination"] a'):
        is_last_page = True
        if (each.text == '下一页 »'):
            is_last_page = False
            #提取下一页的链接,真的忘了css选择器表示该怎么写了
            url = str(re.search(r'"(.+)"',lxml.html.tostring(each,encoding="Unicode")).group(1))
    
    print('成功下载完第%d页!'%page)
    #time.sleep(可适当设置拖延时间)

print('\n\n全部下载完成!^_^')
print('\n\nPowered By 协和研究所')
excel.save('电影资源爬取结果.xlsx')  #将爬取结果命名并保存




[Python] 纯文本查看 复制代码
#Scape_v2.0版
#            ---powered by 协和研究所 
import requests
import time
import lxml.html

class WebSpider(object):
    """网络爬虫类"""
    def __init__(self,url):
        self.url = url  #爬取的网址

    def download_html(self,html_url = None,num_tries = 2,encoding = None):
        #下载网页源码,默认下载self.url网址中的内容
        if not html_url:
            html_url = self.url

        response = requests.get(html_url)
        url_code = response.status_code
        
        while(url_code != requests.codes.ok and num_tries > 0):
            #处理网页响应出错
            if (url_code >= 500 and url_code < 600):
                #当为服务端出错时,重请求直至成功或尝试次数用完为止
                num_tries -= 1
                response = requests.get(html_url)
                url_code = response.status_code
            else:
                #其他错误则引发HTTPError错误
                raise(requests.exceptions.HTTPError)
        
        if response.status_code == requests.codes.ok:
            #判断网页响应是否成功
            if (not encoding):
                #默认编码为requests自动判断的结果
                html = response.text
            else:
                #若制定了编码格式,则采用该编码格式就行解码
                response.encoding = encoding
                html = response.text
        else:
            html = None

        return html  
    
    def selector(self,html,css_expression):
        #根据表达式提取html页面中的信息
        if css_expression:
            tree = lxml.html.fromstring(html)

        return tree.cssselect(css_expression)





生成的excel文件

生成的excel文件

运行效果

运行效果

免费评分

参与人数 11吾爱币 +11 热心值 +10 收起 理由
小小唐僧 + 1 用心讨论,共获提升!
半醉半醒花前坐 + 3 + 1 我最近也在学Python
Hi朽木自雕 + 1 大佬这个代码怎么运行啊,求讲解!!!
admh + 1 + 1 谢谢@Thanks!
超级不听话 + 1 + 1 谢谢@Thanks!
吾爱支持 + 1 谢谢@Thanks!
我就看看而已 + 1 用心讨论,共获提升!
王星星 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
99910369 + 2 + 1 用心讨论,共获提升!
Saup + 1 + 1 用心讨论,共获提升!
CAOhr454 + 1 + 1 我很赞同!

查看全部评分

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

bachelor66 发表于 2019-1-11 16:41
没有关键的URL,可惜了。。。                                    
westlife73 发表于 2019-1-11 16:32
Saup 发表于 2019-1-11 16:34
剪辑狮X 发表于 2019-1-11 16:35
Python比PHP好用吗?
幻世Cc 发表于 2019-1-11 16:35
没学过Python,但是大致看下能看懂,适合新手学习
后天2333 发表于 2019-1-11 17:02
用心讨论,共获提升!
li231475 发表于 2019-1-11 17:13
用了xpath来提取数据原来
yy4780 发表于 2019-1-11 17:15
只能看看热闹
JinkerLeong 发表于 2019-1-11 17:28
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-26 19:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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