美文网首页python 入门大数据 爬虫Python AI Sql程序员
【爬虫】爬取某个18禁网站的电影资源

【爬虫】爬取某个18禁网站的电影资源

作者: MarcoHorse | 来源:发表于2017-10-17 03:14 被阅读3482次

最近在想着爬一些有趣的网站,豆瓣淘宝京东,这些网站大多都被爬烂了,然后就想着爬点简单点的,例如黄色网站啥的是吧,男生一般都会有几个自己知道的网站,不过这里就不讨论细节问题了,直接撸代码。
源代码虽然很简单,不过迟点也会上传到github上面。

开发环境: python3.6.1+window64+idea14

使用到的第三方库:

pymysql xlrd xlwt xlutils beautifulsoup requests

  1. 声明一个爬虫类Crawer,requests负责抓取目标网页信息

  2. 获取到目标信息后,使用beautifulsoup解析

  3. 判断添加到数据库,这里我们只添加到xls,最终文件想要的私聊

     #声明爬虫类
     class Crawer:
            def __init__(self):#初始化操作
            def run(self,start_url):#开始运行
            def downloadHtml(self,url):#加载目标网页数据
            def getFilmCategory(self,url):#获取电影分类列表
            def getCategroysFilmList(self,url):#获取电影分类列表内容
            def getFilmInfo(self,url):#获取电影详情数据
            def saveFilmInfo(self,filminfo):#保存电影相关数据
     #py是面向对象的编程语言
     #声明电影实体类,不需要声明其他对象,电影详情包括,名称,时间,来源等等很多,我们就简单点
     #保存电影的:名称,分类,图片,时间,下载链接,详情页链接
     class filminfo:
            def __init__:pass
     class film:
           def __init__:pass
    

现在写requests爬取数据:

    #导入requests第三方库,如果没下载的使用pip install requests就可以下载了,兼容2.x和3.x
    
    import requests;
    def __init__(self):
            self.session= requests.session()
    def download(self,url):
            res = self.session.get(url)
            if res:
                    #判断如果有返回,那么就对获取到的html数据进行解析
                    return text.encode('raw_unicode_escape').decode('utf-8')
    def run(self,index):
        #先获取到首页的html数据
        indexhtml = self.download(index)
        categorys = self.getFilmCategory(indexhtml);
        for category in categorys:
            categroysfilm = film()
            categroysfilm.haveNext = true;
            while categroysfilm.haveNext :
                categroysfilm = self.getCategroysFilmList(categroy)
                filmlists = categroysfilm.list
                for film in filmlists:
                    info = self.getFilmInfo(film)
                    self.saveFilmInfo(info)

我们把保存数据的操作写了,最后再把涉及到html解析的部分补上来。。

    def getFilmInfo(self,info):
        #声明数据保存的xls文件
        fileName = 'film.xls'
        #文件不存在新建一个文件并添加一张sheet
        if not os.path.exists(fileName):
            w = xlwt.Workbook()
            w.add_sheet('file')
            w.save(fileName)
        #先将当前的工作表复制一份,计算出当前表里有多少条数据,在其后面添加
        #完成后将workbook保存
        rb = xlrd.open_workbook(fileName)
        wb = copy(rb)
        ws = wb.get_sheet(0)
        index = rb.sheets()[0].nrows
        print('当前行数{0}'.format(index))
        ws.write(index, 0, index)
        ws.write(index, 1, filminfo.filmName)
        ws.write(index, 2, filminfo.filmCategory)
        ws.write(index, 3, filminfo.filmImgUrl)
        ws.write(index, 4, filminfo.filmTimeStamp)
        ws.write(index, 5, filminfo.downloadUrl)
        ws.write(index, 6, filminfo.filmUrl)
        wb.save(fileName)

最后就到获取到的html解析过程了:
使用谷歌浏览器F12-右键目标html代码-copy-选择copy selector,会得到目标代码的html相对位置信息
body > div:nth-child(10) > div > ul > li:nth-child(1) > li
根据这些数据来进行beautifulsoup定位

    from bs4 import beautifulsoup as bsoup
    def getFilmCategory(self,indexhtml){
        bs = bsoup(index,'html.parser')
        li =bs.find_all('div')[10].find('div').find('ul').find_all('li')[1].find('li')
        #debug一下看是否定位到自己想要的目标位置
    }

okay,写完,我是不会告诉你们网址的。。。23333333

相关文章

网友评论

本文标题:【爬虫】爬取某个18禁网站的电影资源

本文链接:https://www.haomeiwen.com/subject/yeykuxtx.html