最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python解決網(wǎng)站的反爬蟲(chóng)策略總結(jié)

 更新時(shí)間:2016年10月26日 11:01:46   作者:tyomcat  
網(wǎng)站做了很多反爬蟲(chóng)工作,爬起來(lái)有些艱難,本文詳細(xì)介紹了python解決網(wǎng)站的反爬蟲(chóng)策略,有需要的小伙伴可以參考下。

本文詳細(xì)介紹了網(wǎng)站的反爬蟲(chóng)策略,在這里把我寫(xiě)爬蟲(chóng)以來(lái)遇到的各種反爬蟲(chóng)策略和應(yīng)對(duì)的方法總結(jié)一下。

從功能上來(lái)講,爬蟲(chóng)一般分為數(shù)據(jù)采集,處理,儲(chǔ)存三個(gè)部分。這里我們只討論數(shù)據(jù)采集部分。

一般網(wǎng)站從三個(gè)方面反爬蟲(chóng):用戶請(qǐng)求的Headers,用戶行為,網(wǎng)站目錄和數(shù)據(jù)加載方式。前兩種比較容易遇到,大多數(shù)網(wǎng)站都從這些角度來(lái)反爬蟲(chóng)。第三種一些應(yīng)用ajax的網(wǎng)站會(huì)采用,這樣增大了爬取的難度(防止靜態(tài)爬蟲(chóng)使用ajax技術(shù)動(dòng)態(tài)加載頁(yè)面)。

1、從用戶請(qǐng)求的Headers反爬蟲(chóng)是最常見(jiàn)的反爬蟲(chóng)策略。

偽裝header。很多網(wǎng)站都會(huì)對(duì)Headers的User-Agent進(jìn)行檢測(cè),還有一部分網(wǎng)站會(huì)對(duì)Referer進(jìn)行檢測(cè)(一些資源網(wǎng)站的防盜鏈就是檢測(cè)Referer)。如果遇到了這類(lèi)反爬蟲(chóng)機(jī)制,可以直接在爬蟲(chóng)中添加Headers,將瀏覽器的User-Agent復(fù)制到爬蟲(chóng)的Headers中;或者將Referer值修改為目標(biāo)網(wǎng)站域名[評(píng)論:往往容易被忽略,通過(guò)對(duì)請(qǐng)求的抓包分析,確定referer,在程序中模擬訪問(wèn)請(qǐng)求頭中添加]。對(duì)于檢測(cè)Headers的反爬蟲(chóng),在爬蟲(chóng)中修改或者添加Headers就能很好的繞過(guò)。

2、基于用戶行為反爬蟲(chóng)

還有一部分網(wǎng)站是通過(guò)檢測(cè)用戶行為,例如同一IP短時(shí)間內(nèi)多次訪問(wèn)同一頁(yè)面,或者同一賬戶短時(shí)間內(nèi)多次進(jìn)行相同操作。[這種防爬,需要有足夠多的ip來(lái)應(yīng)對(duì)]

(1)、大多數(shù)網(wǎng)站都是前一種情況,對(duì)于這種情況,使用IP代理就可以解決。可以專(zhuān)門(mén)寫(xiě)一個(gè)爬蟲(chóng),爬取網(wǎng)上公開(kāi)的代理ip,檢測(cè)后全部保存起來(lái)。有了大量代理ip后可以每請(qǐng)求幾次更換一個(gè)ip,這在requests或者urllib中很容易做到,這樣就能很容易的繞過(guò)第一種反爬蟲(chóng)。

編寫(xiě)爬蟲(chóng)代理:

步驟:

1.參數(shù)是一個(gè)字典{'類(lèi)型':'代理ip:端口號(hào)'}
  proxy_support=urllib.request.ProxyHandler({})
2.定制、創(chuàng)建一個(gè)opener
  opener=urllib.request.build_opener(proxy_support)
3a.安裝opener
  urllib.request.install_opener(opener)
3b.調(diào)用opener
  opener.open(url)

用大量代理隨機(jī)請(qǐng)求目標(biāo)網(wǎng)站,應(yīng)對(duì)反爬蟲(chóng)

#! /usr/bin/env python3.4
#-*- coding:utf-8 -*-
#__author__ == "tyomcat"


import urllib.request
import random
import re

url='http://www.whatismyip.com.tw'
iplist=['121.193.143.249:80','112.126.65.193:80','122.96.59.104:82','115.29.98.139:9999','117.131.216.214:80','116.226.243.166:8118','101.81.22.21:8118','122.96.59.107:843']

proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
opener=urllib.request.build_opener(proxy_support)
opener.addheaders=[('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36')]
urllib.request.install_opener(opener)
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')

pattern = re.compile('<h1>(.*?)</h1>.*?<h2>(.*?)</h2>')
iterms=re.findall(pattern,html)
for item in iterms:
  print(item[0]+":"+item[1])

(2)、對(duì)于第二種情況,可以在每次請(qǐng)求后隨機(jī)間隔幾秒再進(jìn)行下一次請(qǐng)求。有些有邏輯漏洞的網(wǎng)站,可以通過(guò)請(qǐng)求幾次,退出登錄,重新登錄,繼續(xù)請(qǐng)求來(lái)繞過(guò)同一賬號(hào)短時(shí)間內(nèi)不能多次進(jìn)行相同請(qǐng)求的限制。[評(píng)論:對(duì)于賬戶做防爬限制,一般難以應(yīng)對(duì),隨機(jī)幾秒請(qǐng)求也往往可能被封,如果能有多個(gè)賬戶,切換使用,效果更佳]

3、動(dòng)態(tài)頁(yè)面的反爬蟲(chóng)

上述的幾種情況大多都是出現(xiàn)在靜態(tài)頁(yè)面,還有一部分網(wǎng)站,我們需要爬取的數(shù)據(jù)是通過(guò)ajax請(qǐng)求得到,或者通過(guò)Java生成的。

解決方案:Selenium+PhantomJS                           

Selenium:自動(dòng)化web測(cè)試解決方案,完全模擬真實(shí)的瀏覽器環(huán)境,完全模擬基本上所有的用戶操作

PhantomJS :一個(gè)沒(méi)有圖形界面的瀏覽器

 獲取淘寶妹妹的個(gè)人詳情地址:

#! /usr/bin/env python
# -*- coding:utf-8 -*-
#__author__ == "tyomcat"

from selenium import webdriver
import time
import re

drive = webdriver.PhantomJS(executable_path='phantomjs-2.1.1-linux-x86_64/bin/phantomjs')
drive.get('https://mm.taobao.com/self/model_info.htm?user_id=189942305&is_coment=false')

time.sleep(5)

pattern = re.compile(r'<div.*?mm-p-domain-info">.*?class="mm-p-info-cell clearfix">.*?<li>.*?<label>(.*?)</label><span>(.*?)</span>',re.S)
html=drive.page_source.encode('utf-8','ignore')
items=re.findall(pattern,html)
for item in items:
  print item[0],'http:'+item[1]
drive.close()

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 基于Python制作一個(gè)桌面寵物

    基于Python制作一個(gè)桌面寵物

    這篇文章主要來(lái)和大家分享一個(gè)Python寵物桌面小程序,全程都是通過(guò) PyQT 來(lái)制作的,對(duì)于 Python GUI 感興趣的朋友,千萬(wàn)不要錯(cuò)過(guò)哦
    2022-12-12
  • python中elasticsearch_dsl模塊的使用方法

    python中elasticsearch_dsl模塊的使用方法

    這篇文章主要介紹了python中elasticsearch_dsl模塊的使用方法,elasticsearch-dsl是基于elasticsearch-py封裝實(shí)現(xiàn)的,提供了更簡(jiǎn)便的操作elasticsearch的方法
    2022-09-09
  • python學(xué)習(xí)之面向?qū)ο蟆救腴T(mén)初級(jí)篇】

    python學(xué)習(xí)之面向?qū)ο蟆救腴T(mén)初級(jí)篇】

    Python從第一天開(kāi)始就是面向?qū)ο蟮恼Z(yǔ)言。正因?yàn)槿绱?,?chuàng)建和使用類(lèi)和對(duì)象是非常地容易。這篇文章主要介紹了python中面向?qū)ο蟮南嚓P(guān)資料,屬于python面向?qū)ο髮W(xué)習(xí)的初級(jí)篇,本章將幫助您在使用Python面向?qū)ο缶幊痰募夹g(shù)方面所有提高,有需要的朋友可以參考借鑒。
    2017-01-01
  • Python @property裝飾器原理解析

    Python @property裝飾器原理解析

    這篇文章主要介紹了Python @property裝飾器原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python 導(dǎo)入文件過(guò)程圖解

    Python 導(dǎo)入文件過(guò)程圖解

    這篇文章主要介紹了Python 導(dǎo)入文件過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python標(biāo)準(zhǔn)庫(kù)calendar的使用方法

    Python標(biāo)準(zhǔn)庫(kù)calendar的使用方法

    本文主要介紹了Python標(biāo)準(zhǔn)庫(kù)calendar的使用方法,calendar模塊主要由Calendar類(lèi)與一些模塊方法構(gòu)成,Calendar類(lèi)又衍生了一些子孫類(lèi)來(lái)幫助我們實(shí)現(xiàn)一些特殊的功能,感興趣的可以了解一下
    2021-11-11
  • python修改linux中文件(文件夾)的權(quán)限屬性操作

    python修改linux中文件(文件夾)的權(quán)限屬性操作

    這篇文章主要介紹了python修改linux中文件(文件夾)的權(quán)限屬性操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python2.x和3.x下maketrans與translate函數(shù)使用上的不同

    Python2.x和3.x下maketrans與translate函數(shù)使用上的不同

    這篇文章主要介紹了Python2.x和3.x下maketrans與translate函數(shù)使用上的不同,這兩個(gè)函數(shù)建立映射來(lái)替換內(nèi)容是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-04-04
  • 解決python gdal投影坐標(biāo)系轉(zhuǎn)換的問(wèn)題

    解決python gdal投影坐標(biāo)系轉(zhuǎn)換的問(wèn)題

    今天小編就為大家分享一篇解決python gdal投影坐標(biāo)系轉(zhuǎn)換的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 最詳細(xì)的python工具Anaconda+Pycharm安裝教程

    最詳細(xì)的python工具Anaconda+Pycharm安裝教程

    這篇文章主要介紹了最詳細(xì)的python工具Anaconda+Pycharm安裝教程,文中有非常詳細(xì)的圖文示例,對(duì)不會(huì)安裝的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04

最新評(píng)論

体育| 白水县| 新田县| 兴文县| 东港市| 永春县| 龙州县| 广东省| 皮山县| 南江县| 西平县| 修水县| 平乡县| 雷波县| 常山县| 泉州市| 中卫市| 安陆市| 河西区| 桂阳县| 万全县| 民勤县| 泗水县| 蓝田县| 富裕县| 措勤县| 浮梁县| 新疆| 云安县| 崇礼县| 岳阳市| 湟源县| 绥滨县| 盐亭县| 克什克腾旗| 丰县| 柳江县| 文山县| 乐安县| 西安市| 历史|