1. 程式人生 > >python 自動回覆論壇

python 自動回覆論壇

本篇文章中使用到的庫有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()