Python3.x學習筆記[2]:百度聯想詞獲取
阿新 • • 發佈:2019-01-03
學習內容來自百度貼吧的某培訓機構一個名叫黃哥的視訊,視訊內容講的是360搜尋,經測試國內其他搜尋引擎大都適用,
但在谷歌上試的時候發現不容易解析,問題出在URL格式中cp=後面代表的字串長度還好想,但是gs_id後面就會變了,
比如這麼個解析出來的json網址,https://www.google.com.hk/complete/search?client=hp&hl=zh-CN&gs_rn=39&gs_ri=hp&tok=LdwfQgWKHs1U3CunHQbV0A&cp=7&gs_id=5xe&q=sublime&xhr=t,紅色部分就是發生變化的,黃色部分是檢索詞,在群裡問過才知道,那些&符號後頭都是引數,把這倆變化的引數部分刪掉,就可以解析了
言歸正傳,獲取百度聯想詞的程式碼如下:
執行結果如下:
['百度翻譯', '百度網盤', '百度雲', '百度防毒', '百度衛士', '百度雲盤登入', '百度網盤搜尋', '百度糯米', '百度影音', '百度影音瀏覽器']
['清明節放假安排 2014', '清明時節雨紛紛', '清明果', '清明果艾餈', '清明詩會', '清明餜', '清明粑', '清明艾餃', '清明暗月', '清明餅']
['鋤禾日當午', '鋤禾日當午全詩', '鋤禾日當午搞笑', '鋤禾日當午 詩名', '鋤禾日當午 清明上河圖', '鋤禾日當午作者', '鋤禾日當午 汗滴禾下土', '鋤禾日了幾個人', '鋤禾 古詩', '鋤禾日當午 造血幹細胞']
['期待戀愛', '期待 girls day', '期待愛', '期待在地下城邂逅有錯嗎', '期待度', '期待的英文', '期待愛情', '期待舞蹈教學', '期待你的回覆 英文', '期待愛歌詞']
['釣魚島嶼最新事件', '釣魚島嶼最新事件中國軍方態度', '釣魚島嶼最新事件開火', '釣魚島嶼', '釣魚島嶼事件中國敗', '釣魚島嶼事件', '釣魚島嶼最新事件中國態度視訊', '釣魚島上有什麼', '釣魚島歌', '釣魚島嶼最新事件新聞']
['django book', 'django 教程', 'django 安裝', 'django cms', 'django 模板', 'django mysql', 'django admin', 'django 下載', 'django ajax', 'django session']
[Finished in 19.9s]
但在谷歌上試的時候發現不容易解析,問題出在URL格式中cp=後面代表的字串長度還好想,但是gs_id後面就會變了,
比如這麼個解析出來的json網址,https://www.google.com.hk/complete/search?client=hp&hl=zh-CN&gs_rn=39&gs_ri=hp&tok=LdwfQgWKHs1U3CunHQbV0A&cp=7&gs_id=5xe&q=sublime&xhr=t,紅色部分就是發生變化的,黃色部分是檢索詞,在群裡問過才知道,那些&符號後頭都是引數,把這倆變化的引數部分刪掉,就可以解析了
言歸正傳,獲取百度聯想詞的程式碼如下:
有些部分被註釋掉是因為沒什麼必要模擬瀏覽器和掛代理,但是視訊裡講到了所以也加入進去了# codeing=utf-8 import urllib.request import re #import random # iplist=['5.98.86.141:8080','24.172.34.114:8181','27.145.145.105:8080'] list1 = ['百度', '清明', '鋤禾', '期待', '釣魚島', 'django'] for i in list1: # ip=random.choice(iplist) gjc = urllib.request.quote(i) url = 'http://suggestion.baidu.com/su?wd=' + gjc + \ '&json=1&p=3&sid=&cb=jQuery110205425511478908079_1396251136074&_=1396251136078' headers1 = {'GET': url, 'Host': "suggestion.baidu.com", 'User-Agent': "Mozilla/5.0 (Windows NT 6.2; rv:28.0) Gecko/20100101 Firefox/28.0", 'Referer': "http://www.baidu.com/"} # proxy_support=urllib.request.ProxyHandler({'http':'http://'+ip}) # opener=urllib.request.build_opener(proxy_support) # urllib.request.install_opener(opener) req = urllib.request.Request(url, headers=headers1) html = urllib.request.urlopen(req).read().decode('gbk') ss = re.findall('\[.*\]', html) print(ss[0].strip('[').strip(']').replace('"', '').split(','))
執行結果如下:
['百度翻譯', '百度網盤', '百度雲', '百度防毒', '百度衛士', '百度雲盤登入', '百度網盤搜尋', '百度糯米', '百度影音', '百度影音瀏覽器']
['清明節放假安排 2014', '清明時節雨紛紛', '清明果', '清明果艾餈', '清明詩會', '清明餜', '清明粑', '清明艾餃', '清明暗月', '清明餅']
['鋤禾日當午', '鋤禾日當午全詩', '鋤禾日當午搞笑', '鋤禾日當午 詩名', '鋤禾日當午 清明上河圖', '鋤禾日當午作者', '鋤禾日當午 汗滴禾下土', '鋤禾日了幾個人', '鋤禾 古詩', '鋤禾日當午 造血幹細胞']
['期待戀愛', '期待 girls day', '期待愛', '期待在地下城邂逅有錯嗎', '期待度', '期待的英文', '期待愛情', '期待舞蹈教學', '期待你的回覆 英文', '期待愛歌詞']
['釣魚島嶼最新事件', '釣魚島嶼最新事件中國軍方態度', '釣魚島嶼最新事件開火', '釣魚島嶼', '釣魚島嶼事件中國敗', '釣魚島嶼事件', '釣魚島嶼最新事件中國態度視訊', '釣魚島上有什麼', '釣魚島歌', '釣魚島嶼最新事件新聞']
['django book', 'django 教程', 'django 安裝', 'django cms', 'django 模板', 'django mysql', 'django admin', 'django 下載', 'django ajax', 'django session']
[Finished in 19.9s]