乙隻爬蟲帶你看世界 4

2021-08-09 20:05:10 字數 3737 閱讀 6836

7.模擬瀏覽器訪問,隱藏python自身資訊

原理:當瀏覽器訪問伺服器上的內容時,伺服器會抓取訪問資訊中header中的user-agent資訊,若user-agent中顯示有python資訊等,則視為爬蟲程式, 此時伺服器會阻止它進行資訊爬取。為了隱藏爬蟲程式,此時使用模擬瀏覽器訪問的方式來進行資訊獲取,模擬瀏覽器方法是新增瀏覽器的user-agent,目前有兩種方法新增。

第一種:先定義head,通過瀏覽器訪問某個**,找到其headersuser-agent的值,在urlopen引數中新增head值即可。

**如下:

head= {}

req = urllib.request.request(url,data,head)

response = urllib.request.urlopen(req)

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

第二種,不用先定義head,而是定義urllib.request物件後,在其後新增add_header即可。

**如下:

req = urllib.request.request(url,data)

修改有道翻譯的例子,進行隱藏訪問。

注意:示例中採用的第二種進行隱藏

選擇第二種隱藏的原因,無需先定義head,直接在requset物件中新增add_header,更加簡潔。

**如下

import urllib.request

import urllib.parse

import json

content = input("請輸入需要翻譯的內容:")

url =''

data = {}

data['i'] = content

data['from'] = 'auto'

data['to'] = 'auto'

data['smartresult'] = 'dict'

data['client'] = 'fanyideskweb'

data['salt'] = '1507902676814'

data['sign'] ='f4bd4b3b948cbc76c913eafdd1853ed8'

data['doctype'] = 'json'

data['version']= '2.1'

data['keyfrom'] = 'fanyi.web'

data['action'] = 'fy_by_clickbuttion'

data['typoresult'] = 'true'

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.request(url,data)

response = urllib.request.urlopen(req)

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

target = json.loads(html)

print('翻譯結果:%s' %(target['translateresult'][0][0]['tgt']))

8.使用**(agent)進行資訊爬取

若爬蟲訪問頻率過高,則伺服器會遮蔽爬蟲,一般有兩種方法,

其一是延遲訪問瀏覽器,

其二是使用**。

one:使用延遲

import urllib.request

import urllib.parse

import json

import time

while(true):

content = input("請輸入需要翻譯的內容(輸入『q!』退出):")

if content == q!:

break;

url =''

data = {}

data['i'] = content

data['from'] = 'auto'

data['to'] = 'auto'

data['smartresult'] = 'dict'

data['client'] = 'fanyideskweb'

data['salt'] = '1507902676814'

data['sign'] = 'f4bd4b3b948cbc76c913eafdd1853ed8'

data['doctype'] = 'json'

data['version']= '2.1'

data['keyfrom'] = 'fanyi.web'

data['action'] = 'fy_by_clickbuttion'

data['typoresult'] = 'true'

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.request(url,data)

response = urllib.request.urlopen(req)

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

target = json.loads(html)

print('翻譯結果:%s' % (target['translateresult'][0][0]['tgt']))

time.sleep(5)   # 等待5s

two:使用**

步驟:

第一步:引數為乙個字典

proxy_support = urllib.request.proxyhandler({})

第二步:定製、建立乙個opener

opener = urllib.request.build_opener(proxy_support)

第三步:安裝opener

urllib.request.install_opener(opener)

呼叫opener

opener.open(url)

示例:

import urllib.request

import random

url = ''      # 檢視ip位址資訊

iplist =['118.114.77.47:8080','111.200.58.94:80']   # **ip list

proxy_support =urllib.request.proxyhandler()

opener =urllib.request.build_opener(proxy_support)

# 定製header資訊

urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)

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

print(html)

乙隻爬蟲帶你看世界 7

11.正規表示式特殊符號及用法 正規表示式特殊符號主要有兩部分構成,其一是元字元,其二是由 加上字母構成的。元字元 舉個栗子 re.search r fish c d fishc sre.sre matchobject span 0,match fishc re.search r fish c d ...

乙隻爬蟲的產生

以下環境基於py2.7 爬蟲架構 url管理器 處理待爬url以及爬過的url,防止重複抓取以及死迴圈 網頁解析器 解析出想要的資料,以及捕捉新的url位址交給url管理器進行處理繼續抓取。過濾資料,拿到有價值的資料進行處理。資料的存放 python 的 set集合 可以防止資料的重複 需要長期儲存...

乙隻R語言de爬蟲

該爬蟲爬取得是某地新聞內容 pa1 用於找到href鏈結 pa2 用於根據鏈結找到新聞內容 pa3 用於儲存進資料庫 嘿嘿 爬蟲pa1 library xml 引入xml包 givehref function rootnode givenames function rootnode getpage ...