1. 程式人生 > >Python學習筆記55 爬蟲(隱藏)

Python學習筆記55 爬蟲(隱藏)

1.為了隱藏訪問方式,可以通過兩種方式:

方法一:直接設定一個字典,作為引數傳給request,通過修改Request的headers引數修改
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
req = urllib.request.Request(url,data,head)
#方法二:在request生成之後通過add header()方法修改
req = urllib.request.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36')
2.為了更好的隱藏,可以使用延時或者代理

1.延時訪問:

import urllib.request
import urllib.parse
import json
import time

while True:
    content = input ('請輸入需要翻譯的內容(輸入"q!"退出程式):')
    if(content == 'q'):
        break
    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=dict2.top'


    data = {}
    data['type'] = 'AUTO'
    data['i'] = content
    data['doctype'] = 'json'
    data['xmlVersion ']= '1.8'
    data['keyfrom'] = 'fanyi.web'
    data['ue'] = 'UTF-8'
    data['action'] = 'FY_BY_CLICKBUTTON'
    data['typoResult'] = 'true'
    data = urllib.parse.urlencode(data).encode('utf-8')

    '''
    #隱藏是Python程式訪問的兩種方法
    方法一:直接設定一個字典,作為引數傳給request,通過修改Request的headers引數修改
    head = {}
    head['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
    req = urllib.request.Request(url,data,head)
    '''
    #方法二:在request生成之後通過add header()方法修改
    req = urllib.request.Request(url,data)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36')

    response = urllib.request.urlopen(req)
    html = response.read().decode('utf-8')

    target = json.loads(html)
    target = target['translateResult'][0][0]['tgt']
    print("翻譯結果:%s" % target)
    time.sleep(5)
2.代理
import urllib.request
import random

url = 'http://www.whatismyip.com.tw'
#找個代理Ip的網站 查詢一些免費IP
iplist =  ['171.13.37.210:808','192.129.229.223:9001','61.237.131.59:80','222.94.144.86:808']

proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})

opener = urllib.request.build_opener(proxy_support)
opener.add_headers = [('User-Agent:','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36')]
urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)

html = response.read().decode('utf-8')

print(html)
測試結果:有時可以,有時不行,正常


相關推薦

Python學習筆記55 爬蟲隱藏

1.為了隱藏訪問方式,可以通過兩種方式: 方法一:直接設定一個字典,作為引數傳給request,通過修改Request的headers引數修改 head = {} head['User-Agent']

Python學習筆記DAY6---爬蟲1

        爬蟲,全稱網路爬蟲,是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。         要寫爬蟲,首先需要寫的程式能連線到網路,Python提供了urllib模組可以用來連線網路,一

Python學習筆記——元組tuple

元組(tuple) 元組和列表類似,特點:()定界符、不可變、有序、支援下標、逗號分隔、元素可以重複、元素查詢速度非常慢。 建立元組: 如果只建立一個元素的元組,一定要在後面加一個逗號: 元組沒有列表中那麼多方法可以使用,因為不可變,所以安全,速度比列表快。 元組可以用做字典的‘鍵’,也可以

python學習筆記第八節函數的相關作業

.com 制作 記得 -1 字典 不能 函數 添加 對象 查看函數內部的註釋 導入一個模塊 加入一個裝飾器,讓用戶調用函數的時候查看註釋是函數本身的而不是裝飾器的 調用加了裝飾器的源代碼功能 更改函數的註釋信息 作業第四題,登錄一次後面函數無須重復登錄 函數內

python學習筆記之socket第七天

.cn 七天 就是 模塊 AR 操作 alt 分享圖片 python學習 參考文檔: 1、金角大王博客:http://www.cnblogs.com/alex3714/articles/5227251.html

python程式設計:從入門到實踐學習筆記-Django入門

建立其他網頁 我們接下來擴充“學習筆記”專案,建立兩個顯示資料的網頁,其中一個列出所有的主題,另一個顯示特定主題的所有條目。 模板繼承 編寫一個包含通用元素的父模板,並讓每個網頁都繼承這個模板,而不必在每個網頁中重複定義這些通用元素。這樣我們可以專注於開發每個網頁的獨特部分。1.父模板

python程式設計:從入門到實踐學習筆記-Django入門

建立網頁:學習筆記主頁 使用django建立網頁通常分三個階段:定義URL、編寫檢視和編寫模板。 首先必須定義URL模式,其描述了URL是如何設計的,讓django知道如何將瀏覽器請求與網站URL匹配,以確定返回哪個網頁。每個URL都被對映到特定的檢視——檢視函式獲取並處理網頁所需的資料。檢視函

python程式設計:從入門到實踐學習筆記Django入門

  建立應用程式 django專案由一系列應用程式組成,他們協同工作,讓專案稱謂一個整體。首先我們執行命令python manage.py startapp learning_logs。     定義模型 開啟剛剛我們建立的資料夾,並修改mod

Python機器學習筆記:SVM1——SVM概述

前言   整理SVM(support vector machine)的筆記是一個非常麻煩的事情,一方面這個東西本來就不好理解,要深入學習需要花費大量的時間和精力,另一方面我本身也是個初學者,整理起來難免思路混亂。所以我對SVM的整理會分為四篇(暫定為四篇)學習,不足之處,請多多指導。   四篇分別為: Pyt

Python機器學習筆記:SVM2——SVM核函式

  上一節我學習了完整的SVM過程,下面繼續對核函式進行詳細學習,具體的參考連結都在上一篇文章中,SVM四篇筆記連結為: Python機器學習筆記:SVM(1)——SVM概述 Python機器學習筆記:SVM(2)——SVM核函式 Python機器學習筆記:SVM(3)——證明SVM Python機器學習筆記

Python機器學習筆記:SVM3——證明SVM

  說實話,凡是涉及到要證明的東西(理論),一般都不好惹。絕大多數時候,看懂一個東西不難,但證明一個東西則需要點數學功底,進一步,證明一個東西也不是特別難,難的是從零開始發明這個東西的時候,則顯得艱難(因為任何時代,大部分人的研究所得都不過是基於前人的研究成果,前人所做的是開創性的工作,而這往往是最艱難最有價

Python機器學習筆記:SVM4——sklearn實現

  上一節我學習了SVM的推導過程,下面學習如何實現SVM,具體的參考連結都在第一篇文章中,SVM四篇筆記連結為: Python機器學習筆記:SVM(1)——SVM概述 Python機器學習筆記:SVM(2)——SVM核函式 Python機器學習筆記:SVM(3)——證明SVM Python機器學習筆記:SV

Python學習day9--linux基礎

sdn zip install bsp docs sbin service dev 網卡 今天我們來看一下Samba服務和nginx服務。 Samba服務 1.samba的功能 samba是一個網絡服務器,用於Linux和Windows之間共享文件。 2.samba服

Python學習第一周總結

country 增強 括號 需要 src 多核cpu 優勢 統一 5.0 Python基礎知識總結 一、前期了解 1.1解釋型語言和編譯型語言 編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以後執行這個程序的時候,就不用再進行翻譯了。 解釋型語言,是

JavaSE 學習筆記之封裝

延遲加載 分類 static str super 想要 oid 懶漢式 可靠性 封 裝(面向對象特征之一):是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。 好處:將變化隔離;便於使用;提高重用性;安全性。 封裝原則:將不需要對外提供的內容都隱藏起來,把屬性都隱藏,提

JavaSE 學習筆記之繼承

內容 訪問 類繼承 mil 抽象方法 ted 內部 -- 中一 繼 承(面向對象特征之一) 好處: 1:提高了代碼的復用性。 2:讓類與類之間產生了關系,提供了另一個特征多態的前提。 父類的由來:其實是由多個類不斷向上抽取共性內容而來的。 java中對於繼承,java只

Angular5學習筆記 - 路由管理

.html 修改內容 註冊 out style 導航 name alt angular5 一、添加路由管理引用 打開src/app/app.module.ts文件 import {RouterModule} from ‘@angular/router‘; import {

Angular5學習筆記 - 配置Http

ice import dropdown pri blog ons 預覽 size 學習 一、引入Http模塊 編輯\src\app\app.module.ts文件 import { HttpModule } from ‘@angular/http‘; /* 註冊模塊

卷積神經網絡學習筆記與心得4池化

設計者 位置 浪費 需要 三種 限制 右移 理論 alt 圖片經過卷積、激活後的結果一般帶有大量原圖信息。 上圖中卷積核提取的是豎直方向上的連續像素,但是,被增強的像素只占了結果的1/3,對於多層網絡,其余重要性較低的信息也被傳入了下一層網絡,造成了不必要的浪費,因此需要

Python3學習筆記-列表list

ray trace 默認 indexer pan rec strong 不存在 mov Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。 註:列表、list、數組、array 是一個東西,只是叫法不一樣 列表的索引(