python写自动化发布租房信息小工具

wylc123 1年前 ⋅ 3321 阅读

复制粘贴太麻烦,python帮你来完成。

#!usr/bin/env python
# -*- coding: utf-8 -*-
#!文件类型: python
#!创建时间: 2019/1/23 15:03
#!作者: SongBin
#!文件名称: GetNoodle_Old.py
#!简介:豆瓣出租房子

import time
import win32api

import pyperclip
import win32con
from pykeyboard import PyKeyboard
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, ElementNotInteractableException, \
    ElementNotVisibleException, TimeoutException, UnexpectedAlertPresentException
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import logging
logging.basicConfig(level=logging.INFO,#控制台打印的日志级别
                    filename='C:\pylogs\output.log',
                    filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
                    #a是追加模式,默认如果不写的话,就是追加模式
                    format=
                    '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
                    #日志格式
                    )
chrome_options = Options()
# chrome_options.add_argument("--headless")
count = 1
m=0
while count > 0:
    try:
        try:
            # 打开浏览器
            logging.error("程序开始运行###########")
            print("程序开始运行###########")
            # browser = webdriver.PhantomJS(executable_path='C:\\softs\\phantomjs-2.0.0-windows\\bin\\phantomjs')  # .Firefox()  # .PhantomJS(desired_capabilities=dcap) # executable_path='/usr/local/bin/phantomjs'  phantomjs没有设置环境变量时可加参数
            browser = webdriver.Chrome(executable_path='C:\\softs\\chrome\\chromedriver.exe',options=chrome_options)  # .Firefox()  # .PhantomJS(desired_capabilities=dcap) # executable_path='/usr/local/bin/phantomjs'  phantomjs没有设置环境变量时可加参数
            browser.implicitly_wait(10)
            loginurl = 'https://www.douban.com/'
            browser.maximize_window()
            browser.get(loginurl)
            # 切换到login frame
            iframe = browser.find_elements_by_tag_name("iframe")[0]
            browser.switch_to.frame(iframe)
            browser.find_element_by_xpath("/html/body/div[1]/div[1]/ul[1]/li[2]").click()
        except UnexpectedAlertPresentException:
            # 获取alert对话框
            dig_alert = browser.switch_to.alert
            time.sleep(1)
            # 打印警告对话框内容
            print(dig_alert.text)
            # alert对话框属于警告对话框,我们这里只能接受弹窗
            dig_alert.accept()
            time.sleep(1)
            pass
        #这里可设置多个豆瓣号
        users = ["",""]
        WebDriverWait(browser, 5, 1).until(EC.presence_of_element_located((By.ID, 'username')))
        browser.find_element_by_id('username').send_keys(users[1])#选择一个账号
        WebDriverWait(browser, 5, 1).until(EC.presence_of_element_located((By.ID, 'password')))
        browser.find_element_by_id('password').send_keys('') #这里填写选择的账号的密码
        browser.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()
        time.sleep(10)
        #进入到我的小组列表页
        browser.get("https://www.douban.com/group/people/179416843/joins")
        time.sleep(5)
        alist = browser.find_elements_by_css_selector("ul>li>div.pic>a")
        hrefs=[];
        for a in alist:
            href = a.get_attribute("href")
            print(a.get_attribute("href"))
            hrefs.append(href)
        while m<len(hrefs):
        # for href in hrefs:
            href = hrefs[m];
            browser.get(href+"new_topic")
            time.sleep(5)
            # 填写标题
            browser.find_element_by_class_name("group-editor-input").send_keys("2019.10.11后入住,北京14号线善各庄地铁站旁边(200米),善各庄周转房,18平单间出租,租金1800 ,可押一付一")

            # 填写内容
            pyperclip.copy("北京14号线善各庄地铁站旁边(200米),善各庄周转房,18平单间出租,租金1800 ,可押一付一,2019.10.11后可入住,无中介费用,男女不限,可住一个人,不可以做饭菜,水电网全免,空调电费有个人电表单算,紧邻望京科技产业园,上班出行方便。有意向租房者可联系房东赵女士:15001260611同微,有意向者可工作日晚上7点后,或周末看房。")
            browser.find_element_by_class_name("public-DraftStyleDefault-ltr").click()
            time.sleep(0.5)
            k = PyKeyboard()
            # 模拟键盘点击ctrl+v
            k.press_key(k.control_key)
            k.tap_key('v')
            k.release_key(k.control_key)
            # browser.find_element_by_class_name("public-DraftStyleDefault-ltr").click()

            # 上传图片
            browser.find_element_by_class_name("DRE-ui-button-image").click()
            time.sleep(0.5)
            pyperclip.copy("C:\\chuzu\\1.jpg")
            time.sleep(0.5)
            k2 = PyKeyboard()
            # 模拟键盘点击ctrl+v
            k2.press_key(k2.control_key)
            k2.tap_key('v')
            k2.release_key(k2.control_key)
            k12 = PyKeyboard()
            k12.tap_key(k12.enter_key)
            time.sleep(2)

            # 上传图片
            browser.find_element_by_class_name("DRE-ui-button-image").click()
            time.sleep(0.5)
            pyperclip.copy("C:\\chuzu\\2.jpg")
            time.sleep(0.5)
            k2 = PyKeyboard()
            # 模拟键盘点击ctrl+v
            k2.press_key(k2.control_key)
            k2.tap_key('v')
            k2.release_key(k2.control_key)
            k12 = PyKeyboard()
            k12.tap_key(k12.enter_key)
            time.sleep(2)
            browser.find_element_by_class_name("group-editor-button-submit").click()
            time.sleep(10)
            # browser.switch_to.default_content
            m=m+1
        print("发完一遍!")
        m = 0
        # 一小时后重发一次
        time.sleep(3600)
    except Exception as  e:
        logging.error("异常信息:"+str(e))
        print("异常信息:"+str(e))
        # browser.quit()
        #win32api.MessageBox(0, "出现异常!", "消息框标题", win32con.MB_OK)
        # count = 0
        # break
        pass

频繁发信息会出现图片验证码的问题待解决,现在可以手动验证,后期可以用验证码识别技术解决,禁止发言的问题无法解决,只能隔一段时间再发。

更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: