爬虫第三弹——利用EditThisCookie获取cookie跳过登陆验证(医脉通)
生活随笔
收集整理的這篇文章主要介紹了
爬虫第三弹——利用EditThisCookie获取cookie跳过登陆验证(医脉通)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
爬蟲第一彈:利用Scrapy爬取1905電影網
爬蟲第二彈:深網爬蟲指南,AcFun評論爬取教程
前言
最近有個活,需要將約300個英文醫學名詞翻譯成中文。
經過一番查找發現醫脈通的詞典還不錯,但是必須要登陸后才能使用其詞典功能。
這種工作量并不大的任務并不值得我們抓包與模擬登陸,太折騰了!!
我們其實只需要保存登陸成功的cookie,在每次請求時都附上該cookie即可!
這時就可以使用EditThisCookie這個插件了!
Cookie
EditThisCookie是一款可以管理Chrome瀏覽器中cookies的插件,用戶可以利用EditThisCookie添加,刪除,編輯,搜索,鎖定和屏蔽cookies。
我們手動登陸醫脈通后,利用 EditThisCookie 導出 cookie,并將其保存到一個txt文件中
這時cookie已被我們成功獲取
下一步將cookie附入我們每次的請求,如下代碼所示
現在我們已經將cokie放入urllib2包中了,以后每次訪問的時候cookielib都會幫我們自動管理cookie,不需要我們操心啦!!
爬蟲
其實cookie不用我們管后,爬蟲就是很普通的urllib2的爬蟲了,沒有什么特別的。
代碼
# -*- coding: utf-8 -*-import json import urllib2 import cookielibfrom pyquery import PyQuery as pqclass YMT(object):def __init__(self):"""讀取從 EditThisCookie 上獲取的cookie并將其綁定到 urllib2 上以后每次爬蟲訪問網站時都會自動帶上cookie,不再需要人工參與"""cookie_jar = cookielib.MozillaCookieJar()cookies = open('cookie.txt').read()for cookie in json.loads(cookies):cookie_jar.set_cookie(cookielib.Cookie(version=0, name=cookie['name'], value=cookie['value'], port=None, port_specified=False, domain=cookie['domain'], domain_specified=False, domain_initial_dot=False, path=cookie['path'], path_specified=True, secure=cookie['secure'], expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False))opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar),urllib2.HTTPHandler)urllib2.install_opener(opener)def _get(self, url):""":param url: 需要訪問的url:return: 返回該url的網頁內容"""request = urllib2.Request(url=url)request.add_header('Referer', 'http://meddic.medlive.cn/search/search.do')response = urllib2.urlopen(request)data = response.read()return datadef get_word_translate(self,word):""":param word: 需要翻譯的英文單詞:return: 如果有對應英文的中文,則返回該中文翻譯,否則返回None"""url = 'http://meddic.medlive.cn/search/search.do?word=%s' % word.replace(' ','+')html = self._get(url)# 用 pyquery 定位翻譯q = pq(html)paraphrase_list = q('.paraphrase_list')for paraphrase in paraphrase_list:p = pq(paraphrase)if p('.dictionary').text() == '英漢醫學短語詞典':return p('.dictionary_message').text()return Noneif __name__ == '__main__':ymt = YMT()word = 'Whipple disease'print ymt.get_word_translate(word)總結
以上是生活随笔為你收集整理的爬虫第三弹——利用EditThisCookie获取cookie跳过登陆验证(医脉通)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将KUX格式转换为MP4格式
- 下一篇: 言简意赅介绍和对比3D结构光与TOF