怎麼配置爬蟲腳本
❶ linux系統下如何部署selenium爬蟲程序
隨著互聯網的快速發展,大數據比對成為企業獲取行業信息、提高競爭力的關鍵手段。然而,人工數據收集成本高、效率低,因此越來越多的企業傾向於使用自動化工具,如Linux系統下的Selenium爬蟲程序,來大規模、高效地收集所需信息。本文將詳細介紹如何在Linux伺服器上部署Selenium爬蟲程序,並通過實例代碼展示具體步驟。
Selenium是一個廣泛使用的Web應用程序測試工具,它通過模擬真實用戶的操作,自動執行測試腳本,適用於各種瀏覽器和操作系統。在處理動態載入的數據時,Selenium尤為高效,能夠直接獲取到JS渲染後的頁面信息,而無需依賴第三方庫或代理。
### 具體部署步驟如下:
#### 引入庫
在python環境下,首先需要導入Selenium庫中的相關模塊,以實現對瀏覽器的控制和自動化操作。
python
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import ChromeOptions
通過配置選項,確保Selenium在無頭模式下運行,提高伺服器的兼容性和效率。
python
chrome_options = Options()
options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
#### 測試代碼
創建一個簡單的Selenium測試腳本,用於驗證瀏覽器驅動是否正常運行,並訪問指定網站獲取頁面標題。
python
s = Service(r"/home/driver/chromedriver")
driver = Chrome(service=s, options=chrome_options)
driver.get("網路一下,你就知道")
print(driver.title)
#### 部署程序
### 安裝Chrome瀏覽器
在Linux環境下,首先確保安裝了Chrome瀏覽器。使用`yum install`命令進行安裝。
bash
yum install dl.google.com/linux/dir...
檢查安裝的Chrome版本,確保與部署的Selenium版本兼容。
bash
google-chrome --version
### 安裝chromedriver驅動
1. **下載驅動**:根據當前使用的Chrome瀏覽器版本下載對應的chromedriver驅動。
bash
wget npm.taobao.org/mirrors/...
2. **解壓安裝**:使用`unzip`命令解壓下載的zip文件,並創建一個目錄存放驅動文件。
bash
unzip chromedriver_linux64.zip
mkdir driver
chmod 777 driver/chromedriver
### 運行測試代碼
在Linux伺服器上創建一個Python腳本(如`test.py`),並運行測試代碼以驗證部署是否成功。
bash
vi test.py
保存後運行腳本檢查結果。
成功執行上述步驟後,您將在Linux伺服器上成功部署並運行Selenium爬蟲程序,實現自動化數據收集,提高工作效率,增強企業的市場洞察力。歡迎各位在實踐中探索更多可能,共同提升數據收集與分析的效率與准確性。
❷ 如何將django項目部署到伺服器(2023年最新解答)
導讀:很多朋友問到關於如何將django項目部署到伺服器的相關問題,本文首席CTO筆記就來為大家做個詳細解答,供大家參考,希望對大家有所幫助!一起來看看吧!
如何在伺服器上部署Django項目並使其在後台一直運行前幾天老師讓我把一個Django項目(爬蟲網頁)放到校園內網上,但是我想先用自己的伺服器來嘗試一下。之前剛好有在DigitalOcean上買過伺服器用來運行ss腳本,平時伺服器一直放著沒啥用,所以就拿它來試驗一下。
廢話不多說,第一步通過WinSCP軟體把Django文件傳到伺服器上。
在伺服器中安裝Django需要的環境和我所需要的Python第三方庫。
以上所有步驟完成後,還需要進行一步操作,這是我經歷的一個坑。打開Django文件目錄中的settings.py,把ALLOWED_HOSTS=[]改為ALLOWED_HOSTS=["*"]。
在伺服器中打開到manage.py所在的目錄,輸入命令:
python3manage.pyrunserver0.0.0.0:8000
然後按下回車,在瀏覽器中輸入:該伺服器IP地址:8000,大功告成!
Attention:
1.python3不是特定的,是根據你的Django項目所需要的環境指定的。
2.8000是埠號,可以修改。
如果想要Django項目一直運行,關閉終端後還在運行,即需要運行如下命令,nohupcommand,command即位上文所說的python3manage.pyrunserver0.0.0.0:8000。
django+vue前後端分離項目部署
後端用的drf,使用的是uwsgi+nginx
進入伺服器項目文件目錄下,我的django項目放在了「/usr/myProjects/」目錄下了。在manage.py同級目錄下創建uwsgi.ini文件,配置如下:
測試效果命令:
如果訪問:xxx.xxx.xxx.xx:8000成功,則uwsgi.ini配置成功
我的nginx.conf所在位置是「/etc/nginx/nginx.conf」
配置文件如下:
1、第一行
主要就是給nginx加許可權,vue部署後使用history路由時會去掉地址後面的『#』號,打包部署後不加許可權會有bug。
2、如配置所示,有兩個Server,分別部署了前端服務,和後端服務,值得注意的是兩個Server用的是同一個伺服器,監聽的埠不同。
3、vue部署需要注意的是反向代理地址:
以及後面的埠問題
4、後端的Server需要注意location中的uwsgi_pass後面的埠號要和uwsgi.ini中配的相同,否則監聽不到
5、後端跨域問題。如果遇到跨域需要自己網上找配置,我的沒遇到,可能是因為我在django的settings中配置了跨域。
6、django-suit後台管理樣式崩了,需要改,但是api可以正常訪問,這個有空再說
7、我開始後台監聽的是8008埠,vue前端監聽的是80埠,這樣前端顯示好看。然而問題出現了,雖然後台api可以正常訪問,vue的本地開發環境也能正常運行且文字、圖片資源均顯示正常,但是前端vue打包線上部署後,文字信息顯示正常,圖片信息缺失8008埠,導致顯示不出來。為圖方便我選擇了前端監聽8008埠,後端監聽80,部署後顯示正常。原因不太清楚///////有空再說吧。
8、不要問我為啥都前後端分離了還部署到一個伺服器上?窮,而且只是測試,沒必要
9、此文僅適合入門
關於django後台admin(suit)缺失的修改(參考:django中文網:)
在環境中進入項目目錄,需要收集css樣式,在終端輸入命令:
接下來你就回發現static文件中包含了css文件,此時再打開網站,樣式顯示正常
uWSGI通過xxx.ini啟動後會在相同目錄下生成一個xxx.pid的文件,裡面只有一行內容是uWSGI的主進程的進程號。
關於uwsgi,進入同屆目錄下
教訓
獲取不到環境,那就指定環境
另外:記得重啟uwsgi,重啟Nginx,實在不行就先把監聽的埠kill掉再重啟
暴力刪埠:fuser-k80/tcp
netstat-aptn命令行,查看所有開啟的埠號
netstat-ntlp|grep80查看具體的埠是否使用
ps-ef|grepuwsgi查看是否有uwsgi埠存在
Django部署——uwsgi+Nginx(超詳細)環境:
python3.6
centos7
Django1.11
用Django寫了個小網站,只能在自己本地跑一跑!這怎麼行?聽說可以部署在雲伺服器上,這樣別人就可以訪問了!
從哪兒開始?就從Django開始吧!老規矩,按步驟:
這里不講Django項目實施過程,假設你已經寫了一個Django項目,並且在本地127.0.0.1:8000能夠跑起來。喏,給你個參考,項目大概長這樣:
也就是項目目錄下的settings.py文件,主要強調幾個地方:
①關閉DEBUG模式:
②修改ALLOWED_HOSTS:
③配置靜態文件存放路徑:
修改好配置之後執行:
這個沒什麼說的。。。在自己的雲伺服器上裝好這兩個工具
安裝好uwsgi後最好驗證一下,驗證方法:
創建一個test.py文件:
啟動uwsgi伺服器:
如果可以正常啟動而不報錯那就應該沒問題,不放心的話再在終端驗證一下:
在uwsgi.ini里進行如下配置:
找到nginx的配置文件夾,centos7的nginx配置文件在/etc/nginx下,該路徑下有一個nginx.conf總配置文件,還有兩個文件夾./conf.d、./default.d,我們將nginx.conf復制一份到conf.d文件夾下,命名為nginx.conf(或者項目名.conf)進行如下修改(根據中文注釋進行相應配置即可):
進入uwsgi.ini文件夾下執行:
在終端執行:
❸ 爬蟲如何爬取微信小程序
通過抓包來爬取微信小程序的數據,涉及到對微信客戶端與伺服器之間的通信進行監控和分析。需技術知識並關注法律與道德風險。下述為通用步驟,但需注意可能違反微信服務條款,且在特定情況下違法,謹慎操作並確保有權訪問使用數據。
1. 安裝抓包工具:如Wireshark、Fiddler或Charles,以便監控分析網路通信。
2. 配置抓包工具:根據所用工具進行相應設置,確保捕獲微信客戶端發出的網路請求。
3. 模擬網路環境:若小程序數據傳輸涉及HTTPS加密,需配置工具解密HTTPS流量,通常需安裝根證書。
4. 使用微信小程序:在微信客戶端啟動並使用目標小程序。確保抓包工具運行,捕獲微信客戶端請求。
5. 分析請求與響應:在抓包工具中識別與小程序相關的網路請求,分析URL、請求頭、請求體及響應內容,確定數據來源與結構。
6. 編寫爬蟲腳本:根據分析結果,編寫腳本模擬網路請求,處理JSON數據及會話管理。
7. 處理數據:爬取數據後需進一步處理,如解析JSON、清洗數據、存儲至資料庫。
推薦Open-Spider,易於使用的數據採集工具,適合不同技術水平用戶。提供模板、智能和自定義採集多種方式,滿足需求。項目地址:https://gitee.com/stonedtx/open-spider
❹ 如何用Python做爬蟲
在我們日常上網瀏覽網頁的時候,經常會看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來做桌面壁紙,或者用來做設計的素材。
我們最常規的做法就是通過滑鼠右鍵,選擇另存為。但有些圖片滑鼠右鍵的時候並沒有另存為選項,還有辦法就通過就是通過截圖工具截取下來,但這樣就降低圖片的清晰度。好吧其實你很厲害的,右鍵查看頁面源代碼。
我們可以通過python來實現這樣一個簡單的爬蟲功能,把我們想要的代碼爬取到本地。下面就看看如何使用python來實現這樣一個功能。
❺ node實現爬蟲的幾種簡易方式
說到爬蟲大家可能會覺得很NB的東西,可以爬小電影,羞羞圖,沒錯就是這樣的。在node爬蟲方面,我也是個新人,這篇文章主要是給大家分享幾種實現node
爬蟲的方式。第一種方式,採用node,js中的 superagent+request + cheerio。cheerio是必須的,它相當於node版的jQuery,用過jQuery的同學會非常容易上手。它
主要是用來獲取抓取到的頁面元素和其中的數據信息。superagent是node里一個非常方便的、輕量的、漸進式的第三方客戶端請求代理模塊,用他來請求目標頁面。
node中,http模塊也可作為客戶端使用(發送請求),第三方模塊request對其使用方法進行了封裝,操作更方便。以下是三者的引入方法:
接下來我們開始請求要爬取的目標頁面。申明目標頁面比如新浪網首頁:
如新浪首頁部分代碼
通過superagent請求目標網站,獲取到網站內容,通過cheerio.load方法引入要解析的html
cheerio中的有關DOM操作的方式
此處採用 .each(function(index,element){...})方式遍歷需要的元素
返回結果如下:
若要將文字內容存儲可採用以下方式:
引入fs模塊const fs= require("fs")
引入path模塊 const path=require("path")
Node.js 內置的fs模塊就是文件系統模塊,負責讀寫文件。和所有其他JS模塊不同的是,fs模塊同時提供了非同步和同步的方法。
在上述方法中調用存儲文字內容mkdirs方法
//存放數據
mkdirs('./content2',saveContent); (注: content2是新建文件名;saveContent是回調函數)
文字內容最終將存儲在content2中的content.txt文件中
若想存儲圖片可採用以下方式:
第二種方式: 使用Nightmare自動化測試工具。
這里介紹一下nightmare工具的用途:
Electron可以讓你使用純JavaScript調用Chrome豐富的原生的介面來創造桌面應用。你可以把它看作一個專注於桌面應用的Node.js的變體,而不是Web伺服器。
其基於瀏覽器的應用方式可以極方便的做各種響應式的交互
Nightmare是一個基於Electron的框架,針對Web自動化測試和爬蟲,因為其具有跟PlantomJS一樣的自動化測試的功能可以在頁面上模擬用戶的行為觸發一些非同步數據載入,
也可以跟Request庫一樣直接訪問URL來抓取數據,並且可以設置頁面的延遲時間,所以無論是手動觸發腳本還是行為觸發腳本都是輕而易舉的。
const Nightmare=require("nightmare") //自動化測試包 ,處理動態頁面
const nightmare=Nightmare({show: true}) show:true時,運行node可以顯示內置模擬瀏覽器
運行結束後,會在image2中存儲下載的圖片。
好了,文章就到這里了,有什麼問題歡迎小夥伴指正。
總結