qq_42985838 2021-07-20 21:06 采纳率: 81.5%
浏览 98
已结题

python自动操作百度知道问题


import uiautomator2 as u2
import threading
import os
# coding=utf-8
# noinspection PyUnresolvedReferences
from urllib.request import quote, unquote
# noinspection PyUnresolvedReferences
from lxml import etree
from selenium import webdriver
import time
# noinspection PyUnresolvedReferences
import requests
from selenium.webdriver.firefox.options import Options
import requests
from bs4 import BeautifulSoup


d = u2.connect("127.0.0.1:62001")


# p=d(resourceId="com.baidu.iknow:id/qb_question_title_tv").get_text()
d

def b():
    while True:
        time.sleep(2)
        if d(text="发 布"):
            time.sleep(1)
            p = d.xpath('//*[@resource-id="app"]/android.view.View[3]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]').get_text()
            print(p)

            driver =  webdriver.Chrome(executable_path="D:\桌面\编程\python\环境变量\chromedriver.exe")

            driver.get('https://baidu.com')
            driver.find_element_by_id("kw").send_keys("site:zhidao.baidu.com " + p)
            driver.find_element_by_id("su").click()
            driver.find_element_by_id("su").click()

            time.sleep(1)
            elem1 = driver.find_element_by_link_text("百度知道")
            elem1.click()
            time.sleep(2)
            #切换当前标签
            driver.switch_to.window(driver.window_handles[1])
            #用这个获取url
            print(driver.current_url)

            time.sleep(1)

            url = driver.current_url


            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67'
            }
            r = requests.get(url, headers=headers)
            r.encoding = r.apparent_encoding
            r.encoding = "gbk"
            print(r.status_code)
            soup = BeautifulSoup(r.text, 'html.parser')
            hh=div = soup.body.find('div',class_='best-text mb-10')
            if hh == None:
                div = soup.body.find('div', class_='answer-text mb-10 line')
                div_list = div.contents[1:]
                print('开始提取文字1')
                for i in div_list:
                    if str(i) != '<p>':
                        print(i)
            else:
                div_list=div.contents[2:]
                print('开始提取文字1')
                for i in div_list:
                    if str(i)!='<br/>':
                        print(i)

                #判断文件是否存在重新创建文件让文件内容为空
            if os.access('1.txt',os.F_OK):
                print('文件存在')
                os.remove('1.txt')
                file = open('1.txt', 'w')
            else:
                file = open('1.txt', 'w')
                print('文件不存在')

                time.sleep(1)
            #读取1.txt内容
            with open('1.txt', 'a+', encoding='utf-8') as f:
            #文本内容加获取的内容写入文本
                bb = f.write(i)
                print("文本写入状态:"+str(bb)+'\n')
                f.close()
                driver.quit()

            #读取需要输入的内容
            n = open('1.txt',encoding="utf-8")
            o = n.read()
            u =d.xpath('//android.widget.EditText').click()
            #输入获取的文本内容
            d.send_keys(o)
            o.close()
            print("文字输入状态:"+str(u))
            time.sleep(0.3)
            d.xpath('//*[@text="发 布"]').click()
            time.sleep(3)


def v():
    while True:
        if d.xpath('//*[@resource-id="app"]/android.view.View[3]/android.view.View[1]/android.view.View[1]/android.view.View[2]'):
            pass
        else:
            time.sleep(2)
            d(text='回答').click()


t2 = threading.Thread(target=b,args=())
t2.start()
t3 = threading.Thread(target=v,args=())




t3.start()

img

img

img

获取百度知道问题答案回答问题,问题是一行一行的输入只能输入一行,把获取的每一行内容写入文本获取文本内容,输入,只能把最后一行写入文本,错误不知道怎么解决

  • 写回答

3条回答 默认 最新

  • CSDN专家-黄老师 2021-07-21 09:01
    关注

    img
    直接去掉这些代码,你每次都删除文件再创建,肯定只有最后一行的数据
    如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 修改了问题 7月20日
  • 创建了问题 7月20日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改