日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

[python]用request库来处理Http协议-收集北航表白墙内的数据

發(fā)布時間:2024/3/12 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [python]用request库来处理Http协议-收集北航表白墙内的数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近閱讀了《圖解Http》這本書.雖然名為“圖解”,可說實話里面的圖真是啥用都沒..不過書還是不錯的,兩個小時跳讀完后,對Http協(xié)議有了大概的了解..對于不搞前端開發(fā)的我,這些知識應該是夠用了。

繼續(xù)Python折騰之旅吧!

?


?

Requests is the only Non-GMO HTTP library for Python, safe for human consumption.

Warning: Recreational use of other HTTP libraries may result in dangerous side-effects, including: security vulnerabilities, verbose code, reinventing the wheel, constantly reading documentation, depression, headaches, or even death.

(摘錄自Requests官方文檔,我覺得這是Urllib被黑的最慘的一次233

1.分析

北航使用率最高的表白墻系統(tǒng)是一個名為”北航微生活“的微信公眾號(貌似很多大學都有相應的”XX微生活“公眾號,而且運營結構基本相同,不是很懂為什么…)。

因為微信公眾號平臺并不直接開放API,并且訪問有一套復雜的驗證機制,所以想要直接通過鏈接來抓取是很難的。網(wǎng)上用的比較多的做法是通過搜狗微信搜索http://weixin.sogou.com/的API來間接實現(xiàn)抓取.

這樣和以前做過的抓取北航教務新聞的爬蟲就差不多了.

但也不是完全一樣,還是有些區(qū)別的

  • 搜狗的頁面有訪問限制,未登陸的話只能訪問搜索結果的前10頁
  • 搜狗有反爬措施,頻繁的訪問會觸發(fā)驗證碼

本著不在一個小項目內(nèi)引入太多問題的原則,采取以下簡單可行但并不優(yōu)美的解決方案

  • 現(xiàn)在瀏覽器內(nèi)手動登陸,并保存Cookies,讓爬蟲帶著這個Cookies進行訪問
  • Time.Sleep

2.編碼與調(diào)試

Requests最大的優(yōu)勢就在于它簡介的語法..構造一個標準的Headers如此的簡單!

?

#_*_ coding: utf-8_*_ import requests import re import sys import time reload(sys) sys.setdefaultencoding('utf-8') Pattern_url = re.compile('^<a href="(.*?)" target="_blank" id="sogou_vr_11002601_title_." uigs_exp_id=',re.S|re.M) DatePattern=re.compile("<strong><span style='color:\ rgb\(112, 48, 160\); '>(.*?)</span>",re.S) DatePattern2=re.compile("</p><p>(.*?)</p><p><br />",re.S) DatePattern_Time=re.compile('<em id="post-date" class="rich_media_meta rich_media_meta_text">(.*?)</em>',re.S) subPattern_img=re.compile('<img data-ratio="1"(.*?)visibility: visible !important;">',re.S) subPattern_amp = re.compile('&amp;'); head={'Host':'weixin.sogou.com','User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Accept-Encoding':'gzip, deflate','Cookie':'CXID=E54348BDD19C7BE40D8BB78FB87F6F1D; ad=evR3vkllll2gKNh2lllllVk7aL1lllll3OhEfkllllwlllll9joll5@@@@@@@@@@; SUID=EABB5C2A4D6C860A577DDC8D000A87F0; IPLOC=CN1100; SUV=1467948688365866; GOTO=Af99046; ssuid=7968034436; sct=35; SNUID=40B49665595D1827AEE18BC259C7FBDA; pgv_pvi=7047098368; ABTEST=4|1478525186|v1; weixinIndexVisited=1; ppinf=5|1478526187|1479735787|dHJ1c3Q6MToxfGNsaWVudGlkOjQ6MjAxN3x1bmlxbmFtZToyOkNOfGNydDoxMDoxNDc4NTI2MTg3fHJlZm5pY2s6MjpDTnx1c2VyaWQ6NDQ6N0I0RERCQTBFM0EzRTU1NDNFQTMzMURCQUY3MDlEOTlAcXEuc29odS5jb218; pprdig=eQG4Qn0r5NFWN4NjVxwEDfQ5l3XxKlTziCwYn-FTxClrHYaMJ-b7KQoxebNoJbGZeIfeZHOsaLgP0KoEUdfMEaOo6KDb7BJiVF4o9I8saIUjIalujK5Xwr6fen4clOeGWRBJh4_oXzEhaLRzIf5l_Tyb1lrHYQDgdLZssGOEAeU; ld=Qs0bYZllll2YJbdwlllllVkHrF6lllll5G@Hpyllll9lllll9ylll5@@@@@@@@@@; ppmdig=1479459994000000988a368ffbfc7c85801f8b1c32470843; JSESSIONID=aaaPoOvx2NPOfdW2mjwFv; PHPSESSID=bjq68kgcqc3phod5j3eukcsie0; SUIR=40B49665595D1827AEE18BC259C7FBDA; pgv_si=s1257009152; seccodeErrorCount=1|Fri, 18 Nov 2016 09:14:27 GMT; successCount=1|Fri, 18 Nov 2016 09:14:34 GMT; LSTMV=887%2C229; LCLKINT=5042',} proxies = {"http": "http://116.252.158.157:8998", }print 'HELLO' for PAGE in range(1,35):print 'PAGE'+str(PAGE)SearchURL='http://weixin.sogou.com/weixin?query=%E5%8C%97%E8%88%AA%E8%A1%A8%E7%99%BD%E5%A2%99&_sug_type_=&sut=805&lkt=0%2C0%2C0&_sug_=y&type=2&sst0=1479460274521&page='+str(PAGE)+'&ie=utf8&w=01019900&dr=1'SearchResult = requests.get(SearchURL,headers=head)Obj=re.findall(Pattern_url,SearchResult.text)for i in Obj: url= re.sub(subPattern_amp,"&",i)page=requests.get(url)TIME=re.findall(DatePattern_Time,page.text)FILE=open(''.join(TIME)+'.txt', 'w')print ''.join(TIME)m=re.findall(DatePattern,page.text)if len(m):passelse:m=re.findall(DatePattern2,page.text)for k in m:DATE=re.sub(subPattern_img,"<EMOJI>",k)FILE.write(DATE)FILE.write('\n')time.sleep(10)

抓取的速度并不快...不過為了避免被反爬,只能這樣了。

3.后記

Python 真的是越來越有意思了..當然除了用各種各樣的庫實現(xiàn)有趣的功能外,我確實有必要加強一下Python的基礎語法..

基礎的玩兒法都會的差不多了..下一步該玩玩兒

  • 高效的數(shù)據(jù)清洗(Beautifulsoap Xpath xml…..)
  • 驗證碼自動處理(Tesseract,機器學習算法…)
  • 自動化測試(selenium2)
  • 更多Web理論知識(Javascript Jquery Css)
  • 數(shù)據(jù)庫技術(SQL)

希望盡快結束數(shù)據(jù)采集的練習。畢竟數(shù)據(jù)分析才是重頭戲

PS:鑒于各大高校的表白墻格式都差不多..這段代碼只需要改一下Cookie和Query字段值就能抓取別的大學的表白墻信息了..感覺要Get到不少數(shù)據(jù)呢

轉載于:https://www.cnblogs.com/cn-lhc/p/6079582.html

總結

以上是生活随笔為你收集整理的[python]用request库来处理Http协议-收集北航表白墙内的数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。