當前位置:首頁 » 雲伺服器 » 自己搭建高校爬蟲伺服器

自己搭建高校爬蟲伺服器

發布時間: 2023-02-03 15:12:51

⑴ 爬蟲代理伺服器怎麼用

我們都知道數據信息是很重要的,當我們進行數據採集的時候直接去別人的網站住區數據的話,是會被網站的反爬蟲限制,如果我們是不使用代理ip,在數據採集的時候可能就不能順利地完成工作。代理ip可以幫助我們隱藏真實的ip地址,我們就像一個真實的用戶在瀏覽網頁。可以放心的進行數據抓取。
因為互聯網的發展很多的HTTP代理開始出現,很多的人不知道選擇什麼用哪個代理商。我們在選擇的時候要看自己從事的什麼業務,不能隨便的選擇。我自己使用過的HTTP代理有極光HTTP,穩定性比較高。操作也很簡單。
1、使用HTTP代理-登錄注冊
2、提取代理ip-生成生成API鏈接生-打開鏈接
3、可以使用打開360安全瀏覽器,並點擊【打開菜單-工具-代理伺服器-代理伺服器設置】
4、粘貼提取的代理IP地址至代理伺服器列表,即完成設置

⑵ 使用樹莓派搭建爬蟲伺服器

先安裝散熱片

在固定到底板上,一共有四個螺絲

查SD卡的那一側先不安裝

固定好風扇

完成!

⑶ 爬蟲代理伺服器怎麼用

如何使用SOCKS代理伺服器

這里就到重點內容了,SOCKS代理是目前功能最為全面,使用最為穩定的代理伺服器,我目前上網就只用SSH搭建SOCKS代理伺服器上網,訪問網路沒有任何限制。下面我就著重講一下如何使用SOCKS代理伺服器。

用SSH搭建SOCKS代理上網,建議使用Firefox瀏覽器,因為Firefox支持SOCKS代理遠程域名解析,而IE只能通過類似SocksCap這樣的第三方軟體實現,不是很方便。

配置Firefox瀏覽器

在Firefox設置SOCKS遠程域名解析,主要是為了防止DNS污染,具體設置方法是,在Firefox地址欄中,輸入 about:config ,按確認,修改裡面的一項數值,

python 爬蟲 ip池怎麼做

Python爬蟲採集信息都是採用IP進行更改,不然就不能快速的爬取信息,可以加入採用這類方式,就失去了快速抓取的意義。
所以,如果要大批量的抓取信息,就不能避免的使用IP池,針對Python爬蟲使用的IP池,是如何搭建起來的呢?接下來和大家說明一下如何建爬蟲IP池的問題。
第一步:找IP資源
IP資源並不豐富,換句話說是供不應求的,因此一般是使用動態IP。
免費方法,直接在網路上找,在搜索引擎中一搜索特別多能夠提供IP資源的網站,進行採集即可。
付費方法,通過購買芝麻代理上的IP資源,並進行提取,搭建IP池。
第二步,檢測可用IP保存
提取到的IP,可以進一步進行檢測是否可用,比如訪問某個固定的網站,找出訪問成功的IP進行保存。
第三步,隨機調用IP
在爬蟲需要使用IP時,可用讀取保存IP的文件,進行隨機調用IP。
本文介紹了如何建爬蟲的IP池方法,可以說搭建IP池很容易,可有些IP的時效性很短,使用之前還可以再測試一次的。如果考慮免費IP,那麼對於IP的效果性要做好心理准備的。

⑸ python爬蟲 如何自己用雲伺服器上搭建代理伺服器 並使用requests測試代理

1、簡介
使用同一個ip頻繁爬取一個網站,久了之後會被該網站的伺服器屏蔽。所以這個時候需要使用代理伺服器。通過ip欺騙的方式去爬取網站

可以使用http://yum.iqianyue.com.com/proxy中找到很多伺服器代理地址

2、應用
# *-*coding:utf-8*-*
from urllib import request
def use_porxy(porxy_addr,url):
porxy = request.ProxyHandler({'http':porxy_addr})
opener = request.build_opener(porxy, request.ProxyHandler)
request.install_opener(opener)
data = request.urlopen(url).read().decode('utf-8')
return data
data = use_porxy("114.115.182.59:128","http://www..com")
print(len(data))

⑹ 如何使用爬蟲做一個網站

做法:傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。

然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。

⑺ 如何用Python寫一個分布式爬蟲

本文將會以PC端微博進行講解,因為移動端微博數據不如PC短全面,而且抓取和解析難度都會小一些。文章比較長,由於篇幅所限,文章並沒有列出所有代碼,只是講了大致流程和思路。

要抓微博數據,第一步便是模擬登陸,因為很多信息(比如用戶信息,用戶主頁微博數據翻頁等各種翻頁)都需要在登錄狀態下才能查看。關於模擬登陸進階,我寫過兩篇文章,一篇是模擬登陸微博的,是從小白的角度寫的。另外一篇是模擬登陸網路雲的,是從有一定經驗的熟手的角度寫的。讀了這兩篇文章,並且根據我寫的過程自己動手實現過的同學,應該對於模擬登陸PC端微博是沒有太大難度的。那兩篇文章沒有講如何處理驗證碼,這里我簡單說一下,做爬蟲的同學不要老想著用什麼機器學習的方法去識別復雜驗證碼,真的難度非常大,這應該也不是一個爬蟲工程師的工作重點,當然這只是我的個人建議。工程化的項目,我還是建議大家通過打碼平台來解決驗證碼的問題。我在分布式微博爬蟲中就是直接調用打碼平台的介面來做的大規模微博賬號的模擬登陸,效果還不錯,而且打碼成本很低。

說完模擬登陸(具體請參見我寫的那兩篇文章,篇幅所限,我就不過來了),我們現在正式進入微博的數據抓取。這里我會以微博用戶信息抓取為例來進行分析和講解。

關於用戶信息抓取,可能我們有兩個目的。一個是我們只想抓一些指定用戶,另外一個是我們想盡可能多的抓取更多數量的用戶的信息。我的目的假定是第二種。那麼我們該以什麼樣的策略來抓取,才能獲得盡可能多的用戶信息呢?如果我們初始用戶選擇有誤,選了一些不活躍的用戶,很可能會形成一個環,這樣就抓不了太多的數據。這里有一個很簡單的思路:我們把一些大V拿來做為種子用戶,我們先抓他們的個人信息,然後再抓大V所關注的用戶和粉絲,大V關注的用戶肯定也是類似大V的用戶,這樣的話,就不容易形成環了。

策略我們都清楚了。就該是分析和編碼了。

我們先來分析如何構造用戶信息的URL。這里我以微博名為一起神吐槽的博主為例進行分析。做爬蟲的話,一個很重要的意識就是爬蟲能抓的數據都是人能看到的數據,反過來,人能在瀏覽器上看到的數據,爬蟲幾乎都能抓。這里用的是幾乎,因為有的數據抓取難度特別。我們首先需要以正常人的流程看看怎麼獲取到用戶的信息。我們先進入該博主的主頁,如下圖

根據唯一性判斷

我們在頁面源碼中搜索,只發現一個script中有該字元串,那麼就是那段script是頁面相關信息。我們可以通過正則表達式把該script提取出來,然後把其中的html也提取出來,再保存到本地,看看信息是否全面。這里我就不截圖了。感覺還有很多要寫的,不然篇幅太長了。

另外,對於具體頁面的解析,我也不做太多的介紹了。太細的東西還是建議讀讀源碼。我只講一下,我覺得的一種處理異常的比較優雅的方式。微博爬蟲的話,主要是頁面樣式太多,如果你打算包含所有不同的用戶的模版,那麼我覺得幾乎不可能,不同用戶模版,用到的解析規則就不一樣。那麼出現解析異常如何處理?尤其是你沒有catch到的異常。很可能因為這個問題,程序就崩掉。其實對於Python這門語言來說,我們可以通過裝飾器來捕捉我們沒有考慮到的異常,比如我這個裝飾器

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

def parse_decorator(return_type):

"""

:param return_type: 用於捕捉頁面解析的異常, 0表示返回數字0, 1表示返回空字元串, 2表示返回[],3表示返回False, 4表示返回{}, 5返回None

:return: 0,'',[],False,{},None

"""

def page_parse(func):

@wraps(func)

def handle_error(*keys):

try:

return func(*keys)

except Exception as e:

parser.error(e)

if return_type == 5:

return None

elif return_type == 4:

return {}

elif return_type == 3:

return False

elif return_type == 2:

return []

elif return_type == 1:

return ''

else:

return 0

return handle_error

return page_parse

上面的代碼就是處理解析頁面發生異常的情況,我們只能在數據的准確性、全面性和程序的健壯性之間做一些取捨。用裝飾器的話,程序中不用寫太多的try語句,代碼重復率也會減少很多。

頁面的解析由於篇幅所限,我就講到這里了。沒有涉及太具體的解析,其中一個還有一個比較難的點,就是數據的全面性,讀者可以去多觀察幾個微博用戶的個人信息,就會發現有的個人信息,有的用戶有填寫,有的並沒有。解析的時候要考慮完的話,建議從自己的微博的個人信息入手,看到底有哪些可以填。這樣可以保證幾乎不會漏掉一些重要的信息。

最後,我再切合本文的標題,講如何搭建一個分布式的微博爬蟲。開發過程中,我們可以先就做單機單線程的爬蟲,然後再改成使用celery的方式。這里這樣做是為了方便開發和測試,因為你單機搭起來並且跑得通了,那麼分布式的話,就很容易改了,因為celery的API使用本來就很簡潔。

我們抓取的是用戶信息和他的關注和粉絲uid。用戶信息的話,我們一個請求大概能抓取一個用戶的信息,而粉絲和關注我們一個請求可以抓取18個左右(因為這個抓的是列表),顯然可以發現用戶信息應該多佔一些請求的資源。這時候就該介紹理論篇沒有介紹的關於celery的一個高級特性了,它叫做任務路由。直白點說,它可以規定哪個分布式節點能做哪些任務,不能做哪些任務。它的存在可以讓資源分配更加合理,分布式微博爬蟲項目初期,就沒有使用任務路由,然後抓了十多萬條關注和分析,結果發現用戶信息抓幾萬條,這就是資源分配得不合理。那麼如何進行任務路由呢?

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

# coding:utf-8

import os

from datetime import timedelta

from celery import Celery

from kombu import Exchange, Queue

from config.conf import get_broker_or_backend

from celery import platforms

# 允許celery以root身份啟動

platforms.C_FORCE_ROOT = True

worker_log_path = os.path.join(os.path.dirname(os.path.dirname(__file__))+'/logs', 'celery.log')

beat_log_path = os.path.join(os.path.dirname(os.path.dirname(__file__))+'/logs', 'beat.log')

tasks = ['tasks.login', 'tasks.user']

# include的作用就是注冊服務化函數

app = Celery('weibo_task', include=tasks, broker=get_broker_or_backend(1), backend=get_broker_or_backend(2))

app.conf.update(

CELERY_TIMEZONE='Asia/Shanghai',

CELERY_ENABLE_UTC=True,

CELERYD_LOG_FILE=worker_log_path,

CELERYBEAT_LOG_FILE=beat_log_path,

CELERY_ACCEPT_CONTENT=['json'],

CELERY_TASK_SERIALIZER='json',

CELERY_RESULT_SERIALIZER='json',

CELERY_QUEUES=(

Queue('login_queue', exchange=Exchange('login', type='direct'), routing_key='for_login'),

Queue('user_crawler', exchange=Exchange('user_info', type='direct'), routing_key='for_user_info'),

Queue('fans_followers', exchange=Exchange('fans_followers', type='direct'), routing_key='for_fans_followers'),

)

上述代碼我指定了有login_queue、user_crawler、fans_followers三個任務隊列。它們分別的作用是登錄、用戶信息抓取、粉絲和關注抓取。現在假設我有三台爬蟲伺服器A、B和C。我想讓我所有的賬號登錄任務分散到三台伺服器、讓用戶抓取在A和B上執行,讓粉絲和關注抓取在C上執行,那麼啟動A、B、C三個伺服器的celery worker的命令就分別是

Python

1

2

3

celery -A tasks.workers -Q login_queue,user_crawler worker -l info -c 1 # A伺服器和B伺服器啟動worker的命令,它們只會執行登錄和用戶信息抓取任務

celery -A tasks.workers -Q login_queue,fans_followers worker -l info -c 1 # C伺服器啟動worker的命令,它只會執行登錄、粉絲和關注抓取任務

然後我們通過命令行或者代碼(如下)就能發送所有任務給各個節點執行了

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

4

⑻ 4.python爬蟲之新建 scrapy 爬蟲項目(抓取和保存)

1.win10 下 win + r 打開cmd 切換新項目的目錄
2.新建scrapy項目的命令:

可以利用pycharm 打開項目文件夾編輯項目
3.items.py
聲明爬取的欄位

4.新建scrapy 爬蟲

用命令 scrapy genspider doubanmovie "movie.douban.com" 創建爬蟲。

5.運行爬蟲

5.1 創建運行腳本
(一)、在 scrapy.cfg 同級目錄下創建 pycharm 調試腳本 run.py,避免每次運行爬蟲輸入密碼,內容如下:

6.修改robottxt協議
修改 settings 中的 ROBOTSTXT_OBEY = True 參數為 False,因為默認為 True,就是要遵守 robots.txt 的規則, robots.txt 是遵循 Robot協議 的一個文件,它保存在網站的伺服器中,它的作用是,告訴搜索引擎爬蟲,本網站哪些目錄下的網頁不希望你進行爬取收錄。在 Scrapy 啟動後,會在第一時間訪問網站的 robots.txt 文件,然後決定該網站的爬取范圍。查看 robots.txt 可以直接網址後接 robots.txt 即可。

一般構建爬蟲系統,建議自己編寫Item Pipeline,就可以在open(path)選擇自己的保存路徑
參考: # scrapy爬蟲事件以及數據保存為txt,json,mysql

7.1保存為json格式時出現亂碼的解決方式:
scrapy抓取豆瓣書籍保存json文件亂碼問題
中文默認是Unicode,如:

\u5317\u4eac\u5927\u5b66
在setting文件settings.py中設置:

就可以解決了
第二種解決辦法
或在cmd中傳入 -s FEED_EXPORT_ENCODING='utf-8'

參考: https://www.cnblogs.com/tinghai8/p/9700300.html

熱點內容
java隨機產生數 發布:2025-05-16 22:25:52 瀏覽:255
java任務管理 發布:2025-05-16 22:17:02 瀏覽:571
安卓如何修改cpu 發布:2025-05-16 21:58:20 瀏覽:364
pythonainb 發布:2025-05-16 21:45:56 瀏覽:855
淘汰伺服器可以做家用電腦嗎 發布:2025-05-16 21:41:31 瀏覽:842
遊程編碼c語言 發布:2025-05-16 21:26:51 瀏覽:587
帝來哪個配置值得購買 發布:2025-05-16 21:12:29 瀏覽:463
什麼是nodejs前端伺服器 發布:2025-05-16 21:12:17 瀏覽:405
編譯選項立即綁定未定義符號 發布:2025-05-16 20:55:13 瀏覽:907
linuxmysql慢日誌 發布:2025-05-16 20:47:58 瀏覽:272