Python爬虫之阳光电影爬虫爬虫分析代码

爬虫分析

这里涉及跨页的爬取,需要理清爬虫的思路。

  • 首先打开网站,需爬取前11个分类的电影数据(经典影片格式不一样,爬虫时过滤掉了)。
  • 进入电影列表页后,正则爬取页数和电影的分类标签,以此构造分页url,然后爬取电影的名字和url。
  • 最后在详细页爬取电影的下载地址。

代码

import requests
import re
from lxml import etree
import csv

def get_cate_info(url):
    res = requests.get(url)
    res.encoding = 'gb2312'
    html = etree.HTML(res.text)
    infos = html.xpath('//div[@class="contain"]/ul/li[position()<12]')
    for info in infos:
        cate_name = info.xpath('a/text()')[0]
        cate_url = res.url + info.xpath('a/@href')[0]
        get_movie(cate_url,cate_name)
        # print(cate_name,cate_url)

def get_movie(url,cate_name):
    res = requests.get(url)
    res.encoding = 'gb2312'
    all_page = re.findall('共(.*?)页',res.text)
    kind = re.findall('<option value=\'(list_.*?_).*?',res.text)
    if len(all_page) > 0:
        kind_url = url.rstrip(url.split('/')[-1]) + str(kind[0])
        for page in range(1,int(all_page[0])+1):
            page_url = kind_url + str(page) + '.html'
            resp = requests.get(page_url)
            resp.encoding = 'gb2312'
            html = etree.HTML(resp.text)
            infos = html.xpath('//div[@class="co_content8"]/ul//table')
            for info in infos:
                detail_url = 'http://www.ygdy8.com' + info.xpath('tr[2]/td[2]/b/a/@href')[0]
                movie_name = info.xpath('tr[2]/td[2]/b/a/text()')[0]
                print(detail_url)
                get_resource(detail_url,cate_name,url,movie_name)
            # print(page_url)

def get_resource(url,cate_name,cate_url,movie_name):
    res = requests.get(url)
    res.encoding = 'gb2312'
    html = etree.HTML(res.text)
    movie_resource = html.xpath('//tbody//tr/td/a/text()')[0]
    writer.writerow((cate_name,cate_url,movie_name,url,movie_resource))
    print(movie_resource)


if __name__ == '__main__':
    fp = open(r'C:\Users\Public\Desktop\dianyin.csv', 'w+', newline='', encoding='utf-8')
    writer = csv.writer(fp)
    writer.writerow(('cate_name', 'cate_url', 'movie_name','movie_url', 'movie_resource'))

    get_cate_info('http://www.ygdy8.com/')

结果如图:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏伪君子的梦呓

ScreenToGif --好用的gif录屏/剪辑软件

引言 遇到想向别人展示一下神操作,或者想向让别人看一下某些效果时,一张图片说不清,弄个视频又太麻烦,这可怎么好呢?其实一个ScreenToGif就可以解决了。 ...

3015
来自专栏谦谦君子修罗刀

程序员面试闪充 -- 性能优化

CPU 和GPU 关于绘图和动画有两种处理方式CPU(中央处理器)和GPU(图形处理器),CPU的工作都在软件层面,而GPU的在硬件层面。 总的来说,可以使用...

37813
来自专栏iOS开发攻城狮的集散地

iOS演示视频转换为GIF

2138
来自专栏企鹅号快讯

涨知识,原来可以这样用 CSS 来追踪用户

英文:jbtronics 译文:枫上雾棋 https://segmentfault.com/a/1190000012901505 ? 除了使用 JS 追踪用...

2086
来自专栏听雨堂

span不如div的地方

页面中产生格式化的效果,我一般比较喜欢用span,因为其本身就是inline的,但是,在进行精细控制时就不行了,比如我想要这个效果,每行由三个部分构成:时间,柱...

2059
来自专栏GA小站

Ad Hoc Analysis的启用

Ad Hoc Analysis是Adobe Analytics里面的一个应用程序,这是一个强大而灵活的平台,可用于构建自定义分析项目。将任意数量的数据表、可视化...

1011
来自专栏221-B

ATX自动化测试框架-iOS

ATX: AutomatorX简称,本文主要讨论的iOS自动化测试的框架 WDA: WebDriverAgent的简称,是Facebook为苹果开发的一个自动化...

3154
来自专栏魏艾斯博客www.vpsss.net

屏幕 GIF 动态图捕获软件及录制过程

作为站长有时候需要录制屏幕 GIF 动态图片,就得现学现卖。这不魏艾斯博客在使用遨游浏览器的过程中遇到一些 bug 需要提交给官方,遨游技术员希望老魏提供一段正...

1682
来自专栏知晓程序

开发 | 小程序「分享图」生成难?一招教你轻松解决

许多小程序,都提供了「分享图」功能。利用它,用户可以生成特制的分享图片,并分享到朋友圈。

1576
来自专栏移动开发之家

从Android到React Native开发(一、入门)

 大家好┏ (^ω^)=,许久不见,一不小心断更就成为了一种习惯,因为最近掉React Native的坑里,无法自拔啊~(╯‵□′)╯︵┻━┻。

952

扫码关注云+社区