【python学习手记】网课精灵~调用爬虫搜索网课答案~


前几天刷网课,但是搜索答案的“正解网”需要操作的步骤太多了...从复制..到搜索,然后点击搜索结果,再往下翻才能看到答案,而且正解网的搜索引擎也有问题,经常搜不到,又要重新百度搜索一遍...严重降低了查答案的效率。那么有没有什么办法一气呵成提高效率呢?

这时候就需要...网课精灵啦~

下载体验

网课精灵是一款用python编写的,可运行于服务器或者个人电脑的..网课答案搜索软件!

#!/usr/bin/python
#encoding:utf-8
import urllib2
import re
import json
import sys
import urllib
import httplib
reload(sys)
sys.setdefaultencoding('utf-8')
def shorturl(urlinput):
        conn=httplib.HTTPConnection('dwz.cn')
        params=urllib.urlencode({'url':"%s"%urlinput})
        conn.request('POST','/create.php',headers={"Content-Type":"application/x-www-form-urlencoded"},body=params)
        result=conn.getresponse()
        resultContent=result.read()
        dic_json=json.loads(resultContent)
        #print dic_json
        try:
                shorturlans="%s"%dic_json['tinyurl']
                outurl=shorturlans
        except:
                shorturlans="%s"%dic_json['err_msg']
        return shorturlans

def fuckchaoxin(quest):
        url=quest
        url="https://www.zhengjie.com/s?type=question&q="+str(urllib2.quote(url))
        response = urllib2.urlopen(url)
        get= response.read()
        title=re.findall(r"a href='/question/(.*?)'",get)
        url="https://www.zhengjie.com/question/"+title[5]
        response = urllib2.urlopen(url)
        get=response.read()
        try:
                try:
                        title=re.findall(r"class='resource_title'>(.*?)</span>",get)
                        out="问题:"+title[0]
                        title=re.findall(r"正确答案</h2><ul><li>(.*?)</li>",get)
                        out=out+"\n答案:"+title[0]
                except:
                        title=re.findall(r"class='resource_title'>(.*?)</span>",get)
                        out="问题:"+title[0]
                        title=re.findall(r"正确答案</h2><p>(.*?)</p>",get)
                        out=out+"\n答案"+title[0]
        except:
                out="找不到结果"
        out=out+"结果不对?看看百度的结果吧:"+shorturl("https://www.baidu.com/s?wd="+str(urllib2.quote(aow)))

以上是网课精灵的核心代码,需要用到的时候,只要output=fuckchaoxing("网课问题关键字")就能直接获得网课的答案,如果搜索结果错误,也可以通过短网址查看百度搜索该题目的结果~

在正解网中搜索一个问题后,打开的url为https://www.zhengjie.com/s?type=question&q=问题的URL字符

所以我们通过换算问题的URL字符来获取了搜索结果的页面并读取,查询html可以发现,所有的答案页面都是"https://www.zhengjie.com/question/XXXXX"的格式,通常,我们需要的是第一个答案,所以我匹配了获得的搜索页面中全部含"/question/"的字段XXXXX,其中第五个含有"/question/"的XXXXX就是我们需要的答案页面了

接下来让爬虫打开https://www.zhengjie.com/question/XXXXX,查询html,匹配问题和答案的字串进行显示就可以了~针对搜索结果的问题,我通过了百度短网址API来缩短了百度搜索该问题的链接,这样即使搜索结果不对,也能通过一键点开百度对应搜索来查询正确的答案,大幅提高了网课答题的效率。


想要成为自己的未来