亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python使用Mechanize模塊編寫爬蟲的要點解析

2020-01-04 17:34:19
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python使用Mechanize模塊編寫爬蟲的要點解析,作者還講解了Mechanize程序占用內存過高問題的相關解決方法,需要的朋友可以參考下
 

 mechanize是對urllib2的部分功能的替換,能夠更好的模擬瀏覽器行為,在web訪問控制方面做得更全面。結合beautifulsoup和re模塊,可以有效的解析web頁面,我比較喜歡這種方法。
    下面主要總結了使用mechanize模擬瀏覽器的行為和幾個例子(谷歌搜索,百度搜索和人人網登錄等)
1.初始化并建立一個瀏覽器對象
    如果沒有mechanize需要easy_install安裝,以下代碼建立瀏覽器對象并作了一些初始化設置,實際使用過程可以按需開關。其實只用默認的設置也可以完成基本任務。

#!/usr/bin/env pythonimport sys,mechanize#Browserbr = mechanize.Browser()#optionsbr.set_handle_equiv(True)br.set_handle_gzip(True)br.set_handle_redirect(True)br.set_handle_referer(True)br.set_handle_robots(False)#Follows refresh 0 but not hangs on refresh > 0br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)#debugging?br.set_debug_http(True)br.set_debug_redirects(True)br.set_debug_responses(True)#User-Agent (this is cheating, ok?)br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]


2.模擬瀏覽器行為
    瀏覽器對象建立并初始化完畢之后即可使用了,下面給出幾個例子(代碼承接以上部分)
獲取web網頁:
    分行打印可以逐個查看詳細信息,就不贅述

r = br.open(sys.argv[1])html = r.read()print htmlprint br.response().read()print br.title()print r.info()


模擬谷歌和百度查詢
    打印和選擇forms,然后填寫相應鍵值,通過post提交完成操作

for f in br.forms(): print fbr.select_form(nr=0)

    谷歌查詢football

br.form['q'] = 'football'br.submit()print br.response().read()


    百度查詢football

br.form['wd'] = 'football'br.submit()print br.response().read()

  
    相應鍵值名,可以通過打印查出

回退(Back)
    非常簡單的操作,打印url即可驗證是否回退

# Backbr.back()print br.geturl()

3.http基本認證

br.add_password('http://xxx.com', 'username', 'password')br.open('http://xxx.com')

4.form認證
    以登陸人人網為例,打印forms可以查出用戶名和密碼鍵信息

br.select_form(nr = 0)br['email'] = usernamebr['password'] = passwordresp = self.br.submit()

5.cookie支持
    通過導入cookielib模塊,并設置瀏覽器cookie,可以在需要認證的網絡行為之后不用重復認證登陸。通過保存session cookie即可重新訪問,Cookie Jar完成了該功能。

#!/usr/bin/env pythonimport mechanize, cookielibbr = mechanize.Browser()cj = cookielib.LWPCookieJar()br.set_cookiejar()

6.proxy設置
設置http代理

#Proxybr.set_proxies({"http":"proxy.com:8888"})br.add_proxy_password("username", "password")#Proxy and usrer/passwordbr.set_proxies({"http":"username:password@proxy.com:8888"})

 

7.關于內存過高問題

在用mechanize寫了一個爬蟲腳本,想要去某網站爬取大概30萬張圖片。
 
整個過程是:
1、獲取目標頁面地址
2、取得目標地址前幾頁的所有圖片url
3、對這些url進行下載,并把索引數據保存到mysql數據庫。


這個腳本大概每秒鐘完成一張圖片的下載(主要是網絡只有200K/S左右,是瓶頸)
當圖片下載到大約15000張左右的時候,發現越來越慢,最后干脆停下了。
用ps aux查看,發現進程sleep了,感覺很奇怪。
free看一下,內存竟然只剩下100M了(系統總內存4GB)
在網上瞎逛了一下,發現原來mechanize默認會保存模擬過的操作歷史,導致占用的內存越來越大:
http://stackoverflow.com/questions/2393299/how-do-i-disable-history-in-python-mechanize-module
 
為了方便,大約翻譯一下:
mechanize初始化Browser()的時候,如果你不給他傳一個history對象作為參數,Browser()就會按照默認的方式(允許保存操作歷史)來進行初始化,你可以隨便傳個什么history給它即可,如自定義一個NoHistory對象:
 

class NoHistory(object):  def add(self, *a, **k): pass  def clear(self): pass  b = mechanize.Browser(history=NoHistory()) 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日本高清视频| 91日本视频在线| 国产一区二区三区在线观看视频| 美女视频久久黄| 国产欧美精品一区二区三区-老狼| 亚洲精品国产品国语在线| 亚洲欧洲一区二区三区在线观看| 亚洲网站在线看| 中文字幕亚洲综合| 欧美在线视频播放| 欧美性猛交99久久久久99按摩| 久久久精品国产| 亚洲精品之草原avav久久| 欧美影院久久久| 97香蕉超级碰碰久久免费的优势| 国产视频久久网| 日韩国产中文字幕| 国产日韩换脸av一区在线观看| 中文欧美日本在线资源| 成人黄色av网| 亚洲天堂av高清| 91在线播放国产| 在线日韩欧美视频| 欧美亚洲国产日韩2020| 欧美日韩一区二区在线| 国产日韩欧美在线| 欧美激情视频一区二区| 91日本视频在线| 国产一区二区三区视频| 精品福利在线看| 欧美极品少妇全裸体| 欧美精品videosex牲欧美| 精品少妇一区二区30p| 日韩成人中文字幕在线观看| 国产精品视频99| 国产视频亚洲视频| 亚洲国产欧美自拍| 精品视频在线观看日韩| 国产精品直播网红| 欧美巨大黑人极品精男| 亚洲无限乱码一二三四麻| 欧美激情免费观看| 日韩欧美在线字幕| 热久久免费国产视频| 国产在线拍偷自揄拍精品| www亚洲精品| 亚洲美女av在线播放| 日韩欧美福利视频| 日韩高清电影免费观看完整| 亚洲大胆人体av| 日韩成人av网址| 国产伦精品免费视频| 亚洲性视频网址| 国产成人综合精品在线| 国产午夜精品视频免费不卡69堂| 青青久久av北条麻妃黑人| 国产精品久久久久久av| 国产成人免费91av在线| 日韩电影免费在线观看| 亚洲欧洲av一区二区| 欧美激情国产高清| 国产一区在线播放| 伦伦影院午夜日韩欧美限制| 久久99精品久久久久久青青91| 国产成人精品亚洲精品| 国产精品久久久av久久久| 久久成年人视频| 亚洲国产精品高清久久久| 68精品久久久久久欧美| 亚洲人成伊人成综合网久久久| 日本成人免费在线| 日韩福利视频在线观看| 久久综合九色九九| 一本色道久久88精品综合| 最近2019年日本中文免费字幕| 欧美午夜女人视频在线| 亚洲午夜性刺激影院| 狠狠躁天天躁日日躁欧美| 亚洲电影免费观看高清| 亚洲国产精彩中文乱码av在线播放| 国产精品羞羞答答| 在线精品视频视频中文字幕| 亚洲香蕉在线观看| 欧美激情videos| 国产视频在线一区二区| 亚洲大胆人体在线| 91高清视频在线免费观看| 国产日本欧美视频| 久久久久久久久网站| 日韩影视在线观看| 久久久91精品| 日本一区二区三区在线播放| 国产成人久久久精品一区| 97热在线精品视频在线观看| 亚洲视频999| 欧美激情伊人电影| y97精品国产97久久久久久| 亚洲精品美女在线观看播放| 亚洲最大av网| 日韩亚洲精品视频| 欧美日本黄视频| 欧美在线xxx| 日韩精品视频在线免费观看| 国产精品白丝jk喷水视频一区| 欧美激情xxxxx| 亚洲日韩欧美视频| 免费av一区二区| 欧美激情在线狂野欧美精品| 青草热久免费精品视频| 日韩欧美综合在线视频| 欧美另类极品videosbestfree| 亚洲人精选亚洲人成在线| 国产在线观看一区二区三区| 成人黄色午夜影院| 午夜精品久久久99热福利| 欧美成人免费观看| 一本一本久久a久久精品牛牛影视| www.美女亚洲精品| 日韩三级影视基地| 久久视频在线直播| 亚洲高清久久久久久| 在线午夜精品自拍| 国产啪精品视频网站| 精品视频久久久久久久| 亚洲性生活视频| xvideos国产精品| 福利二区91精品bt7086| 成人黄色免费片| 欧美性猛交xxxx免费看久久久| 欧美性视频在线| 国内精品国产三级国产在线专| 日本亚洲精品在线观看| 国产成人+综合亚洲+天堂| 国产精品96久久久久久| 亚洲丁香久久久| 欧洲成人性视频| 亚洲国产欧美在线成人app| 久久精品成人欧美大片古装| 久久人人爽人人爽人人片av高请| 国产精品99久久久久久久久久久久| 中文字幕在线精品| 欧美精品久久久久久久久久| 在线观看欧美日韩| 中文在线资源观看视频网站免费不卡| 538国产精品一区二区在线| 美日韩精品免费观看视频| 91精品在线一区| 国产裸体写真av一区二区| 亚洲欧洲一区二区三区在线观看| 九九视频这里只有精品| 亚洲国产精品高清久久久| 国产精品丝袜久久久久久高清| 日韩国产精品亚洲а∨天堂免| 成人欧美一区二区三区在线| 成人情趣片在线观看免费| 精品动漫一区二区| 91美女片黄在线观| 亚洲欧美综合精品久久成人| 色黄久久久久久| 国产精品视频白浆免费视频| 色偷偷噜噜噜亚洲男人| 欧美与欧洲交xxxx免费观看| 欧美成人激情视频免费观看| 国产亚洲欧洲在线|