python 自动回复论坛

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/angelbeats11/article/details/79932959

本篇文章中使用到的库有selenium,requests,bs4等Python库。原理就是利用selenium元素查找进行填写内容和点击鼠标等操作,结合bs4获取页面链接。每个小时限制回复20次,手动回复也挺快的,技术交流。代码有待改进,初衷是不用是用selenium,直接发送相应的数据,但是不会,只好动用selenium,关于selenium自行百度。本文共三个文件。虽然使用了selenium打开浏览器进行操作,整个代码还是可以后台运行。

1、login.py

#coding=utf-8
from selenium import webdriver
import time
def login(driver,url):
    driver.get(url)
    time.sleep(1)
    #driver.maximize_window() # 浏览器全屏显示

    try:
        # 通过用户名密码登陆
        driver.find_element_by_id("ls_username").send_keys("***********")#替换自己的账号
        driver.find_element_by_id("ls_password").send_keys("**********")#替换自己的密码
        # 勾选保存密码
        driver.find_element_by_id("ls_cookietime").click()
        time.sleep(1)
        # 点击登陆按钮
        driver.find_element_by_css_selector('.pn.vm').click()
        time.sleep(1)
    except:
        print('登录失败!!!')
        exit()
        #上述网站指定元素找不到,即登录失败,则退出程序



2、repl.py

import time
import random
def reply(driver,url):
    reply_words = ['每天都来中国高清论坛看看有什么电影!',
                   '感谢楼主分享精彩电影!',
                   '楼主分享的高清电影太好了!',
                   '中国高清论坛很棒!',
                   '既然你诚信诚意的推荐了,那我就勉为其难的看看吧!',
                   '感谢楼主的无私分享!']
    driver.get(url)  # 打开网址
    time.sleep(1)
    try:
        driver.find_element_by_id('fastpostmessage').send_keys(reply_words[random.randint(0,5)])
        driver.find_element_by_id('fastpostsubmit').click()
        time.sleep(15)
    except:
        pass#回复失败则跳过本轮操作

3、主文件demo.py

#-*- encoding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
import os
import login
import reply
import time
import random

#获取各种电影连接
def get_urls(url):
    wb_data = requests.get(url)
    urls = []
    if wb_data.ok:
        soup = BeautifulSoup(wb_data.text, 'html.parser')
        temp_urls = soup.select('.new a')
        for temp_url in temp_urls:
            if temp_url['href'][-4:] == 'html':
                urls.append(temp_url['href'])
    return urls


head_urls = ['http://www.87lou.com/forum-57-{}.html'.format(str(i)) for i in range(10)]
login_url = "http://www.87lou.com/"
chromedriver = "D:/Program Files/Anaconda3/chromedriver"#设置插件的路劲
os.environ["webdriver.chrome.driver"] = chromedriver#
driver = webdriver.Chrome(chromedriver) #模拟打开浏览器
login.login(driver,login_url)#登录页面

reply_times = 0#网站每个小时限制回复20次

for head_url in head_urls:
    urls = get_urls(head_url)#获取所有电影链接
    for url in urls:
        reply.reply(driver,url)#回复每一个电影
        reply_times += 1
        if reply_times % 20 == 0:
            time.sleep(random.randint(3600,3655))#一小时回复20次
driver.quit()

展开阅读全文

没有更多推荐了,返回首页