python調(diào)用微信公眾號(hào)搜索

該案例調(diào)用搜狗微信公眾號(hào)搜索的接口,實(shí)現(xiàn)了輸入關(guān)鍵字搜索然后返回對(duì)應(yīng)的公眾號(hào)名稱,公眾號(hào),以及公眾號(hào)描述的功能

# coding:utf-8
import requests
import urllib
from bs4 import BeautifulSoup

# 爬取的網(wǎng)址url:http://weixin.sogou.com/weixin?type=1&s_from=input&query=%E4%BA%A7%E5%93%81&ie=utf8&_sug_=n&_sug_type_=

# 定義獲取url管理器的方法
def get_url(keyword, page):
    urlList = []
    for page in range(page):
        page = page + 1
        firstUrl = 'http://weixin.sogou.com/weixin?type=1&s_from=input&ie=utf8&_sug_=n&_sug_type_=&query='
        lastUrl = '&page='
        kw = urllib.quote(keyword)
        url = firstUrl + kw + lastUrl + str(page)
        urlList.append(url)
    return urlList


# 定義獲取搜索結(jié)果的方法
def get_info(keyword, page):
    urlList = get_url(keyword, page)
    resList = []
    for url in urlList:
        response = requests.get(url)
        res = response.content
        soup = BeautifulSoup(res, 'html.parser')
        nameList = soup.findAll('p', attrs={'class': 'tit'})
        enameList = soup.findAll('label', attrs={'name': 'em_weixinhao'})
        summaryList = soup.select('.gzh-box2 + dl > dd')
        # 分頁(yè)搜索結(jié)果返回的條數(shù)不一致(搜狗的反爬機(jī)制),所以這邊選擇了7作為臨界值,某一個(gè)url返回的大于等于7,則爬取第2頁(yè),否則不進(jìn)行第2頁(yè)爬取
        # 這里應(yīng)該還有更好的方案,大家可以想一想
        if len(nameList) >= 7:  
            for v in range(len(nameList)):
                resDict = {}
                resDict = {
                    'name': nameList[v].text.strip('\n'),
                    'ename': enameList[v].text,
                    'summary': summaryList[v].text
                }
                resList.append(resDict)
        else:
            for v in range(len(nameList)):
                resDict = {}
                resDict = {
                    'name': nameList[v].text.strip('\n'),
                    'ename': enameList[v].text,
                    'summary': summaryList[v].text
                }
                resList.append(resDict)
            break

    for weixin in resList:
        print '名字:%s' % (weixin['name'].encode('utf-8'))
        print '公眾號(hào):%s' % (weixin['ename'].encode('utf-8'))
        print '描述:%s' % (weixin['summary'].encode('utf-8'))
        print '\n'


if __name__ == '__main__':
    keyword = raw_input('請(qǐng)輸入關(guān)鍵字:')
    page = input('請(qǐng)輸入搜索結(jié)果的頁(yè)數(shù):')
    get_info(keyword, page)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,271評(píng)論 25 708
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,678評(píng)論 19 139
  • 公司自助餐廳,正在排隊(duì)的我,聽(tīng)到了這樣一組對(duì)話: 女生::你盛這么多,吃得完嗎? 男生:我今早上趕得急,沒(méi)吃飯,有...
    軍嫂梓螢閱讀 556評(píng)論 0 1
  • 今天生命地圖復(fù)訓(xùn)第一天,晚上在做個(gè)案的時(shí)候,我的情緒完全被帶起來(lái)了,于是一個(gè)人在小房間一直放,原來(lái)這么多年,我一直...
    金晶花閱讀 285評(píng)論 0 0
  • 人老先從腿上老。 當(dāng)家中老人腿腳不便,步履蹣跚時(shí)。你可想到也許老人膝關(guān)節(jié)正遭受病痛的折磨! 西醫(yī)膝關(guān)節(jié)痛分諸多種原...
    針道自然李閱讀 831評(píng)論 0 0

友情鏈接更多精彩內(nèi)容