python利用百度知道求答题答案

import json
import requests
from bs4 import BeautifulSoup as BS
from urllib import parse

#解析问题和答案
def open_question():
    with open("tounao.txt","r",encoding="utf-8") as f:
            res = f.read()
            js = json.loads(res)
            question = js["data"]["quiz"]
            options = js["data"]["options"]
            print(question)
    return question, options

#搜索百度知道,取出结果列表
def search(question):
    pages = [0, 10, 20]
    question = parse.quote(question.encode('gbk'))
    answers = []
    for page in pages:
    #"https://zhidao.baidu.com/search?lm=0&rn=10&pn={}&fr=search&ie=gbk&word={}"
        url ='https://zhidao.baidu.com/search?word={}&ie=gbk&site=-1&sites=0&date=0&pn={}&fr=search&lm=0&rn=10'.format(question,str(page))
        print(url)
        headers ={
            'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
        }
        r = requests.get(url, headers = headers)
        r.encoding = 'gbk'
        soup = BS(r.text, "html.parser")
        #print(soup.contents)
        want = soup.find("div", id="wgt-list")
        wants = want.find_all("dl", class_ ='dl')

        for dl in wants:
                ans = dl.find("dd",class_="dd answer").text
                answers.append(ans)
    return answers

#分析结果
def work(options, answers):
    res = {option:0 for option in options}
    for option in options:
        for answer in answers:
            if answer.find(option)>=0:
                res[option]+=1
    print(res)
    return res

question, options = open_question()
answers = search(question)
work(options, answers)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值