吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4733|回复: 22
收起左侧

[Python 转载] 新人首帖 爬虫高分电影

  [复制链接]
yx_robert 发表于 2018-11-13 01:07
本帖最后由 yx_robert 于 2018-11-13 18:38 编辑

看论坛
学习很久
首次发个爬虫学习心得
高手无视
忽略丑陋的编码

[Python] 纯文本查看 复制代码
#! /usr/bin/env python
# -*- coding: UTF-8 -*-

from lxml import etree
import requests
import sys

reload(sys)
sys.setdefaultencoding('gb2312')


def gbk_2_utf(_str):
    return _str.decode('gb2312').encode('UTF-8')


main_web = 'https://www.dytt8.net/'
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
    'Referer': 'http://www.ygdy8.net/html/gndy/dyzz/list_23_2.html'
}

new_movie_web = 'https://www.dytt8.net/html/gndy/dyzz/index.html'
movie_list = []
save_file = u'最新高分电影.txt'


def main():
    url = new_movie_web
    # 得到电影页代码
    reopens = requests.get(url, headers=headers)
    reopens.encoding = "gb2312"  # 手动指定字符编码为utf-8
    root = etree.HTML(reopens.text)  # 导入
    # root = etree.tostring(root, encoding="utf-8", xml_declaration=False)

    # res = root.xpath('//a/@class')    #取某节点所有某属性
    # res = root.xpath('//*[@class="ulink"]')   #取匹配的所有节点
    # res = root.xpath('//*[@class="ulink"]/@href')     #取匹配的所有节点的某属性
    res = root.xpath('//*[@class="ulink"]')
    # res = root.xpath('//*[@class="ulink"]/@*') #匹配所有属性
    # res = root.xpath('//*//[@class="ulink"]')
    # print type(res)

    #
    movie_name = ''
    movie_adress = ''

    str_grade = u'豆瓣评分 '
    demand = float('7.5')
    for i in res:
        movie_url = main_web + i.attrib['href']
        print movie_url
        movie_name = i.text
        req = requests.get(movie_url, headers=headers)
        req.encoding = "gb2312"
        s = req.text.find(str_grade)
        if s != -1:
            s += len(str_grade)
            e = req.text[s:].find('/')
            # print req.text[s: s + e]
            val = float(req.text[s: s + e])
            # print req.text
            print val

            if val > demand:
                # print req.text[s+e:]
                rt = etree.HTML(req.text)
                # result = rt.xpath('//td[1]/a[1]/@href')
                # 查找第一个td包含的a, 并且a的属性href中包含‘ftp’
                result = rt.xpath('//td[1]/a[contains(@href, "ftp")]')
                print type(result), result
                for j in result:
                    # print j.attrib['href']
                    movie_adress = j.attrib['href']
                    movie_list.append([movie_name, movie_adress])
                # break

        # print i.attrib['href'], i.text

    with open(save_file, 'w') as f:
        for i in movie_list:
            f.write(i[0] + '\n')
            f.write(i[1] + '\n\n')
        f.close()


if __name__ == "__main__":
    main()

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

123benny456w 发表于 2018-11-13 04:49
谢谢分享 楼主辛苦了  收藏
 楼主| yx_robert 发表于 2018-11-13 10:18
fch 发表于 2018-11-13 02:34
这代码放哪才可以运行  就是说这代码怎样可以实现爬虫功能啊

命令行 cmd
python xxx.py
这是个代码分享
没做成工具
fch 发表于 2018-11-13 02:34 来自手机
这代码放哪才可以运行  就是说这代码怎样可以实现爬虫功能啊
beijinwork 发表于 2018-11-13 02:54
感谢分享 不过没有输出信息 能不能加个输出信息啊 这样不知道状态 只能时不时的看一下保存的文本
beijinwork 发表于 2018-11-13 03:19
    str_grade = u'豆瓣评分 '
    demand = float('7.0')

这里改成 7.0 没问题, 改成 6.0就获取不到了 为什么
nightingwish 发表于 2018-11-13 05:40
赞一个,其实自己动手,丰衣足食。参照撸主代码试着自己写一个才会有长进,
电话情思 发表于 2018-11-13 07:30
以后找高分电影方便许多
hu007 发表于 2018-11-13 07:41
点赞!谢谢分享!
591789 发表于 2018-11-13 08:24
感谢分享,已收藏
wilder 发表于 2018-11-13 08:26
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-30 05:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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