资源共享吧|易语言论坛|逆向破解教程|辅助开发教程|网络安全教程|www.zygx8.com|我的开发技术随记

 找回密码
 注册成为正式会员
查看: 3635|回复: 10

python实现自动采集VIP课程帖子中的百度网盘链接

[复制链接]

6

主题

230

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
44
积分
234
贡献
0
在线时间
22 小时
注册时间
2020-4-10
最后登录
2023-2-6

终身VIP会员

发表于 2020-5-5 13:48:08 | 显示全部楼层 |阅读模式
本帖最后由 请我喝茶 于 2020-5-5 14:15 编辑

# -*- coding: utf-8 -*-

# Author: 桑葚ICE
# Email: 152516cc@gmail.com
# Blog: iicey.github.io
# JueJin: juejin.im/user/5c64dce8e51d45013c40742c
import re
import time

import requests
from scrapy import Selector


class Spider:

    def __init__(self, un="", pwd="", cookie=""):
        self.un = un
        self.pwd = pwd
        self.cookies = {}
        self.headers = {"cookie": cookie}
        self.bd_url_info = {}

    def enter(self):
        params = {
            "mod": "logging",
            "action": "login",
            "loginsubmit": "yes",
            "infloat": "yes",
            "lssubmit": "yes",
            "inajax": "1"
        }
        data = {
            "fastloginfield": "username",
            "username": self.un,
            "password": self.pwd,
            "quickforward": "yes",
            "handlekey": "ls",
        }
        response = requests.post(
            'https://www.zygx8.com/member.php',
            headers=self.headers,
            params=params,
            data=data
        )
        self.cookies = requests.utils.dict_from_cookiejar(response.cookies)

    def fid_to_tid(self, fid, page=1, tid_s=None):
        """
        :param fid:
        :param page:
        :return:
        """
        params = (
            ('mod', 'forumdisplay'),
            ('fid', fid),
            ('page', page),
            ('t', '5104641'),
        )

        response = requests.get(
            'https://www.zygx8.com/forum.php',
            headers=self.headers,
            # cookies=self.cookies,
            params=params
        )
        ret = Selector(response)
        tid_l = ret.xpath('//*[@id="threadlisttableid"]/tbody[contains(@id,"normalthread")]/@id').extract()
        if not tid_s:
            tid_s = set()
        old_count = len(tid_s)
        for i in tid_l:
            tid_s.add(i.replace("normalthread_", ""))
        new_count = len(tid_s)
        if new_count != old_count:
            page += 1
            return self.fid_to_tid(fid, page=page, tid_s=tid_s)
        else:
            return tid_s

    def get_content(self, fid, tid):
        response = requests.get(
            f"https://www.zygx8.com/forum.php?mod=viewthread&tid={tid}&extra=page%3D1",
            headers=self.headers
        )
        if "如果您要查看本帖隐藏内容请" in response.text:
            self.post_content(fid, tid)
            time.sleep(60)
            return self.get_content(fid, tid)
        else:
            # time.sleep(1)
            result = Selector(response)
            url_info = result.xpath('//div[@class="showhide"]//text()').extract()
            try:
                bd_url = [i for i in url_info if "https://" in i][0]
                bd_pwd = re.findall(r"\w\w\w\w", [i for i in url_info if "提取码" in i][0])[0]

                print(bd_url, bd_pwd)
                self.bd_url_info[bd_url] = bd_pwd
            except IndexError as e:
                print(e, response.url)

    def post_content(self, fid, tid):
        """
        :param fid:
        :param tid:
        :return:
        """
        params = (
            ('mod', 'post'),
            ('infloat', 'yes'),
            ('action', 'reply'),
            ('fid', fid),
            ('extra', ''),
            ('tid', tid),
            ('replysubmit', 'yes'),
            ('inajax', '1'),
        )

        data = {
            'formhash': '78484d61',
            'handlekey': 'reply',
            'noticeauthor': '',
            'noticetrimstr': '',
            'noticeauthormsg': '',
            'usesig': '0',
            'subject': '',
            'message': '666'
        }

        response = requests.post('https://www.zygx8.com/forum.php',
                                 headers=self.headers, params=params, data=data)

    def main(self):
        pass


if __name__ == '__main__':
    cookie = "浏览器F12打开取出cookie放到这里"
    spider = Spider(cookie=cookie)
    for fid in [158]:
        for tid in spider.fid_to_tid(fid):
            spider.get_content(fid, tid)
    print(spider.bd_url_info)
回复

使用道具 举报

4

主题

71

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
25
积分
75
贡献
0
在线时间
12 小时
注册时间
2020-5-3
最后登录
2021-7-24

终身VIP会员

发表于 2020-5-5 23:46:27 | 显示全部楼层
没回复的可以取到吗?
回复 支持 反对

使用道具 举报

6

主题

230

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
44
积分
234
贡献
0
在线时间
22 小时
注册时间
2020-4-10
最后登录
2023-2-6

终身VIP会员

 楼主| 发表于 2020-5-6 11:08:05 | 显示全部楼层
ou315001655 发表于 2020-5-5 23:46
没回复的可以取到吗?

不能,不回复就想拿内容可以学渗透然后自己搞
回复 支持 反对

使用道具 举报

6

主题

230

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
44
积分
234
贡献
0
在线时间
22 小时
注册时间
2020-4-10
最后登录
2023-2-6

终身VIP会员

 楼主| 发表于 2020-5-6 11:09:26 | 显示全部楼层
ou315001655 发表于 2020-5-5 23:46
没回复的可以取到吗?

这个你睡前或者看视频的时候挂起来让它跑起来就OK,不用管他
回复 支持 反对

使用道具 举报

4

主题

2337

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
29
积分
2359
贡献
0
在线时间
257 小时
注册时间
2020-8-3
最后登录
2021-10-16

终身VIP会员

发表于 2020-8-9 00:25:00 | 显示全部楼层
就是300秒内不能重复发言比较恶心,所以想都回复一下,以后搜就可以直接看了。保存那么多到百度云也没用
回复 支持 反对

使用道具 举报

2

主题

284

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
54
积分
286
贡献
0
在线时间
88 小时
注册时间
2020-5-18
最后登录
2024-11-21

终身VIP会员

发表于 2020-8-27 08:10:08 | 显示全部楼层
回复

使用道具 举报

1

主题

47

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
53
积分
50
贡献
0
在线时间
24 小时
注册时间
2019-6-19
最后登录
2022-11-26

终身VIP会员

发表于 2020-9-22 20:40:48 | 显示全部楼层
666
回复

使用道具 举报

3

主题

552

帖子

0

精华

终身高级VIP会员

Rank: 7Rank: 7Rank: 7

资源币
22
积分
554
贡献
0
在线时间
62 小时
注册时间
2020-11-12
最后登录
2024-11-10

终身VIP会员

发表于 2020-11-24 18:20:36 | 显示全部楼层
谢谢分享
回复

使用道具 举报

2

主题

42

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
9
积分
45
贡献
0
在线时间
24 小时
注册时间
2021-12-15
最后登录
2023-10-23

终身VIP会员

发表于 2022-2-1 00:03:48 | 显示全部楼层
666
回复

使用道具 举报

0

主题

50

帖子

0

精华

注册会员

Rank: 2

资源币
5
积分
50
贡献
0
在线时间
0 小时
注册时间
2022-7-11
最后登录
2022-7-11
发表于 2022-7-11 02:10:24 | 显示全部楼层
感谢楼主的无私分享!
回复 支持 反对

使用道具 举报

 点击右侧快捷回复  

本版积分规则

小黑屋|资源共享吧 ( 琼ICP备2023000410号-1 )

GMT+8, 2024-11-21 19:56 , Processed in 0.068330 second(s), 13 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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