猫史档案馆


【python】【风纪委员】猜测,探究风纪07用程序摸鱼的方法(爬虫获取帖子/评论)

用户:mornwindmornwind查看:58 回复:25 评论:58 创建时间:2023-01-04T16:56:22


center_image

center_image

import requests
import json
import time
from bs4 import BeautifulSoup as bs
import lxml

def string_similar(s1, s2):
    #算法请自行编写
web=#帖子列表API,网址自行探索
lst=[]
nl=[]
get_id=[]
def check(lst,text,user,id_list,id):
    #此段算法自行探索
    raise
    return lst,id_list
def save(lst):
    with open("信息.json","w",encoding="utf-8") as f:
        json.dump(lst,f)
        print("\n数据已经保存\n")

print("开始获取信息\n")
lt_url="https://api.codemao.cn/web/forums/boards/simples/all"#帖子分区的API
l=json.loads(requests.get(lt_url).text)["items"]
lt=[[i["id"],i["name"]] for i in l]


for name in range(len(lt)):
    print(f"正在获取{lt[name][1]}")
    for i in range(1,1000):
        #写代码风格不好请见谅
        ll=len(lst)
        url=web.format(lt[name][0],i)
        w=requests.get(url)
        w.encoding="utf-8"
        data=json.loads(w.text)["items"]
        for j in data:
            user=(j["user"]["id"],j["user"]["nickname"])
            id=j["id"]
            title=j["title"]
            text=bs(j["content"],"lxml").text.replace("\n","").replace(" ","")
                lst,get_id=check(lst,text,user,get_id,id)
            except:
                continue
        nl.append(len(lst))
        if nl[-1]==sum(nl[-20:])/20:
            print("获取已经稳定\n")
            break
        print("    已经获取第",i,"页"," 共",len(lst)-ll,"项"," 当前已经获取",len(lst),"项",sep="",end="\n")
    else:
        print("获取结束\n")
    save(lst)
    time.sleep(1)
save(lst)

center_image

import requests
import json
import time
from bs4 import BeautifulSoup as bs
import lxml


def string_similar(s1, s2):
    #同上,自行编写
web=#API,自行探索
lst=[]
id_list=[]
last=0
def save(lst):
    with open("信息.json","w",encoding="utf-8") as f:
        json.dump(lst,f)
        print("数据已经保存")
def check(lst,text,user,id_list,id):
    #同上,自行编写
    raise
    return lst,id_list
print("开始获取信息")
lt_url="https://api.codemao.cn/web/works/channels/list?type=KITTEN"#作品API
l=json.loads(requests.get(lt_url).text)["items"]
lt=[[i["id"],i["name"]] for i in l]


for name in range(len(lt)):

    ou=#API

    ls = json.loads(requests.get(ou).text)
    for i in ls:
        try:
            id=i["id"]
            name=i["name"]
            print("    正在获取",name,sep="")
            url=web.format(id)
            w=requests.get(url)
            l=json.loads(w.text)["items"]
            print("        预计获取100条评论")
            for j in l:
                user=[j["user"]["id"],j["user"]["nickname"]]
                text=j["content"]
                lst,id_list=check(lst,text,user,id_list,id)
            print("        获取了",len(lst)-last,"条评论",sep="")
            last = len(lst)
            print("现在已获取", last, "条评论", sep="")
        except:
            pass
save(lst)


回复

上一页1 页 / 共 1下一页
mornwindmornwind

ddd

点赞0


评论


_HHHHHHHHHH__HHHHHHHHHH_

666

点赞0


评论


judgment07judgment07

写的很好,下次不要在写了

很刑啊···思路大致一样,我似乎还可以优化一下我的程序(也是Py)

不过这是教程帖吗?真的能让人学会吗···

点赞7


评论


mornwindmornwind

ddd

点赞0


评论


proxyproxy

好厉害!

点赞0


评论


judgment20judgment20

对哦可以用爬虫摸鱼(划去)找业绩诶!我也去写个emotion_doge

点赞1


评论


proxyproxy

我没太看懂,但我大为震撼

点赞0


评论


judgment10judgment10

看不懂,老老实实翻帖子吧(

点赞2


评论


星野残翼星野残翼

《风纪摸鱼大会现场》

点赞2


评论


AucunAucun

可能不是爬虫,是AI人工智( ),源代码:https://g i t h u b.com/T u r i n g-P r o j e c t/A n t i F r a u d C h a t B o t(所有要摸鱼的风纪记得感谢我

点赞1


评论


AucunAucun

感谢风纪07,你的代码写的太”好“了,我多年的低血压被笑好了

点赞1


评论


underlineunderline

点赞0


评论


初夏晴雨初夏晴雨

emotion_doge风纪的特有优势直接被挖走了(

点赞1


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

我不明白为啥不用xpath,更加安全()()

点赞0


评论


白给坤白给坤

不好差点泄露自己的cookie(汗)

点赞0


评论


白给坤白给坤

奇怪?怎么发不出去

点赞0


评论


白给坤白给坤

于是我来分享一下自动评论(打广告)的py代码,仅供参考。为了防止大家都打广告,这个cookie你们肯定是用不了的

from requests import *
from time import sleep
from random import choice
from json import loads, dumps
while True:
    nw = get('https://api.cod喵/creation-tools/v1/pc/discover/newest-work?offset=0&limit=5')
    _dict = loads(nw.text)
    for infos in _dict['items']:
        item = list(infos.items())
        print(item[0][1])  # 作品id
        print(item[1][1])  # 作品名称
        print(item[5][1])  # 作者昵称
        cookie = 'authorization=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJDb2RlbWFvIEF1dGgiLCJ1c2VyX3R5cGUiOiJzdHVkZW50IiwiZGV2aWNlX2lkIjowLCJ1c2VyX2lkIjoxMjU4MzkxNDI1LCJpc3MiOiJBdXRoIFNlcnZpY2UiLCJwaWQiOiI2NWVkQ1R5ZyIsImV4cCI6MTY3NjI2NTExOSwiaWF0IjoxNjcyMzc3MTE5LCJqdGkiOiIzMGVlYjUwZC1iMzZjLTQzNGMtYWYxYy1jMWQwZmNmNmNiODQifQ.AYeqIBA369kYSuQmnt3hlIq1703kdcgGjtVBvodbXLQ;acw_tc=2f624a2216723771197106156e4fb824b63e759c543b470ca6429216cfa2e4'
        headers = {
            "Content-Type": "application/json",
            "User-Agent": 'Mozilla/5.0 (Windows NT 5.1rv: 21.0) Gecko/20100101 Firefox/21.0',
            'cookie': cookie
        }
        sentents = (
            '【自动】{nick_name}的作品不错哟~继续加油(加广告)',
            '【自动】很好!继续做出优秀作品吧(加广告)',
            '【自动】{nick_name}的不错哟~(加广告)',
            '【自动】{work_name}->这个作品我看好哟~(加广告)'
            '【自动】{nick_name}继续加油,作品{work_name}很好!(加广告)'
        )
        item=list(infos.items())
        content=choice(sentents).format(work_name=item[1][1],nick_name=item[5][1])
        p=post(r'''https://api.cod喵/creation-tools/v1/works/{}/comment'''.format(item[0][1]),
                headers=headers, 
                data=dumps({'content': content}))
        print(p.text, p)
        p = post(r'https://api.cod喵/nemo/v2/works/{}/like'.format(item[0][1]),
                    headers=headers,
                    data=dumps({}))
        print(p.text, p)
        print(item[1][1], item[0][1])

点赞1


评论


UT猫UT猫

Python哪儿学的?我除了爬虫一个也不晓得(doge

点赞0


评论


Ctrl_VCtrl_V

真6

点赞0


评论


一个STUB用户_6923702一个STUB用户_6923702

xdm晚上喵鱼

这里给个余弦相似度判断文本相似度的Python算法(可能喵山 见谅

def compStr(s1 = '',s2 = ''):
    s1v = [];
    s2v=[];
    
    a = set(s1+s2);

    for i in a:
        s1v.append(s1.count(i));
        s2v.append(s2.count(i));
    print(s1v,s2v);
    i,j,k = 0,0,0;
    for p in range(0,len(s1v)):
        i+=s1v[p]*s2v[p]
    for p in s1v:
        j+=p**2
    j = math.sqrt(j)
    for p in s2v:
        k+=p**2
    k = math.sqrt(k)
    res = float(i)/j/k
    return res

点赞0


评论


mornwindmornwind

查重可以用difflib库

点赞0


评论


AokenAoken

ddd

点赞0


评论


mornwindmornwind

ddd

点赞0


评论


仙之鹤仙之鹤

666

点赞0


评论


旁观者JErS旁观者JErS

为什么不直接用编程猫api获取帖子内容

点赞0


评论