精华 【原创】insight论坛灌水区爬虫编写(面面出品,必属精品)
发布于 4 个月前 作者 mianmian 554 次浏览 来自 技术/人物

先给老大说声“对不起”,像我们这些技术狗唯有技术原创帖,还望老大海涵。

声明:此代码本人原创仅限交流,用作其他用途概不负责!!! 有喜欢写python爬虫的大家可以一起交流。

设计思路:让爬虫自动帮助我们用不同的账号在灌水区回复,回复完成之后自动关机。(为了不让回复是一样的,所以让爬虫自动将小说里面的长于15个字符的句子用作回复)

准备工作: 第一:我用的是python的selenium库,这个库支持现在主流的浏览器,我使用的是Chrome浏览器。 第二:要让程序能都操作Chrome浏览器,就必须下载Chromedriver。我是win10操作系统 ChromeDriver - WebDriver for Chrome下载地址:https://chromedriver.chromium.org/downloads (提示:根据自己Chrome浏览器的版本下载对应的Driver) 第三:先写一段自动将下载的TXT小说,拆分成每200行一份的小文件用作以后程序读取。

难点: 第一:老大目前论坛的回复区是在页面的最底部,所以要将页面下拉到最下方才能捕捉到页面的元素。所以我用的模拟‘END’键下拉页面到底部。 第二:老大目前论坛的回复框是CodeMirror,在一般情况Display:none,也就是说回复框栏的元素是隐藏的,不能直接捕捉元素,必须先要click一下。焦点才能汇聚到CodeMirror上 第三:直接用selenium的sendkey方法是不能发内容发送到CodeMirror上的。我使用的是JS语句来发送。

准备齐全,现在开始撸代码。(说明:getcookie()和wenzishibie()是我自己测试百度AI接口的,这两个函数不用去管) 拆分小说代码: 00.png

自动灌水区回帖代码: 01.png 02.png 03.png

运行后效果: 04.png 05.png

28 回复

牛逼啊,老铁

@apige520 哎。。不会写行情分析,没办法唯有撸码。。

牛逼!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

自己顶一下

老铁高手,代码敲的比我勤快,人太懒写了个键鼠轨迹程序测试结很完美,我写的就是时间点没抓到,属于半成品哈哈

@lxl880510 没有啦,前几天好玩写的。老铁可以一起交流呀。

呼。。。。。。。。。果然好少人。

@👍👍👍👍👍厉害的,python牛人。向你学习,可否深度交流一下。

@love_8844 可以呀,我都在老大的TG和微信群里面。论坛@我也行。 刚写了一个撸空投的PYTHON,一起交流。

群里的牛人很多啊,佩服佩服

这样的技术牛人必须顶一下

都是牛人,后悔当初没有学IT专业,会写代码太帅了

刚好老大缺技术团队,赶紧加入吧🤣🤣

@charles7708 进了老大的技术招募群了,坐等老大召唤。

回复按钮的XPATH变了,使用时请自行核实。

都是牛人,后悔当初没有学IT专业,会写代码太帅了

这真的是太棒了,活该赚积分,可惜我不会。.·´¯(>▂<)´¯·.

03/02/2021 更新1.3版本 1.添加自动签到功能 2.添加错误抛出(避免因网络或其他原因造成的机器人崩溃) 3.重构代码

废话不多说,直接上代码。有需要的老铁直接下载代码运行就可以了。(账户那里填写你自己的账号)

WebRobot version 1.3

Time: 03/02/2021

Author: mianmian

Email: weepingrabbitmianmian@gmail.com

Update explanation:

1.Add check-in function

2.Add Error-pop

3.Refactored functions

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import time


# 账号管理
def account_list():
	account_list = [['第一个账号', '密码'], ['第二个账号', '密码']]

	return account_list


# 自动签到
def check_in(CHECKIN_URL, driver):
	driver.get(CHECKIN_URL)
	# 判断是否签到
	try:
		driver.find_element_by_id('checkin').click()
	except:
		print('今日已签到!')


# 自动回复
def auto_reply(BASIC_URL, book_number_path, reply_number, driver):
	driver.get(BASIC_URL)
	# 进入灌水区
	driver.find_element_by_partial_link_text('永久灌水').click()
	driver.find_element_by_tag_name('html').send_keys(Keys.END)

	with open(book_number_path, encoding='utf-8', mode='r') as file:
		sam = 0
		for line in file:
			# 内容大于15字符就输出
			if len(line) > 15:
				sam += 1

				try:
					# 点击CodeMirror并激活,再输入内容
					css_panel = driver.find_element_by_id("reply_form")
					code_mirror_element = css_panel.find_element_by_css_selector(".CodeMirror")
					driver.execute_script("arguments[0].CodeMirror.setValue(arguments[1]);", code_mirror_element, line)

					# 点击回复
					driver.find_element_by_xpath("//body/div[@id='main']/div[@id='content']/div[3]/div[2]/form[1]/div[1]/div[1]/div[3]/input[1]").click()
					print('已经成功回复: {} 次'.format(sam))
					time.sleep(3)

				except:
					print('每次最多回复200次')
					break

			if sam >= reply_number:
				break

# 关闭电脑
def shutdown_computer():
	os.system('shutdown -s -f -t 0')


# web机器人主程序
def webrobot_main(BASIC_URL, CHECKIN_URL, username, userpassword, book_path, driver_path, bookname, reply_number):
	try:
		# 开启Chrome浏览器驱动
		driver = webdriver.Chrome(driver_path)
		book_number_path = book_path + '{}.txt'.format(bookname)

		# 登录网站
		driver.get(BASIC_URL)
		driver.find_element_by_link_text('登录').click()
		driver.find_element_by_name('name').send_keys(username)
		driver.find_element_by_name('pass').send_keys(userpassword)
		driver.find_element_by_class_name('span-primary').click()

		# 开始签到
		check_in(CHECKIN_URL, driver)
		# 开始回复
		auto_reply(BASIC_URL, book_number_path, reply_number, driver)
		# 删除使用完的文件
		os.remove(book_number_path)
		driver.close()
		bookname += 1
		return bookname

	except Exception as error:
		print(error)
		return webrobot_main(BASIC_URL, CHECKIN_URL, username, userpassword, book_path, driver_path, bookname, reply_number)

if __name__ == '__main__':
	# 常量
	driver_path = 'C:\chromedriver\chromedriver.exe'
	book_path = 'D:/Books/'
	file_name = 'number.txt'
	reply_number = 195

	# URL
	BASIC_URL = 'https://insightcj.com'
	CHECKIN_URL = 'https://insightcj.com/checkin'

	# 获取书名
	bookname = int(open(book_path + file_name, 'r').read())
	# 获取账号
	account_list = account_list()

	# 账号切换
	for account in account_list:
		username = account[0]
		userpassword = account[1]
		print('账号:{}'.format(username))
		# 开始web机器人,并返回已读书名
		bookname = webrobot_main(BASIC_URL, CHECKIN_URL, username, userpassword, book_path, driver_path, bookname, reply_number)

	bookname += 1
	# 更新已读书名
	open(book_path + file_name, 'w+').write(str(bookname))
	print('任务已完成')
	# 关闭电脑
	shutdown_computer()

牛逼!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

论坛里都是人才啊!可以加入insigth财经技术团队

我去,真强!~可以加入老大团队去搞技术呀

啥也看不懂,但是我就是觉得牛币。。。。。

功能还是没看懂

感謝分享~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 補

回到顶部