使用python搜索aws的簡單介紹

本文目錄一覽:

如何用Python爬取搜索引擎的結果

我選取的是爬取百度知道的html 作為我的搜索源數據,目前先打算做網頁標題的搜索,選用了 Python 的 scrapy 庫來對網頁進行爬取,爬取網頁的標題,url,以及html,用sqlist3來對爬取的數據源進行管理。

爬取的過程是一個深度優先的過程,設定四個起始 url ,然後維護一個數據庫,數據庫中有兩個表,一個 infoLib,其中存儲了爬取的主要信息:標題,url ,html;另一個表為urlLib,存儲已經爬取的url,是一個輔助表,在我們爬取每個網頁前,需要先判斷該網頁是否已爬過(是否存在urlLib中)。在數據存儲的過程中,使用了SQL的少量語法,由於我之前學過 MySQL ,這塊處理起來比較駕輕就熟。

深度優先的網頁爬取方案是:給定初始 url,爬取這個網頁中所有 url,繼續對網頁中的 url 遞歸爬取。代碼逐段解析在下面,方便自己以後回顧。

1.建一個 scrapy 工程:

關於建工程,可以參看這個scrapy入門教程,通過運行:

[python] view plain copy

scrapy startproject ***

在當前目錄下建一個scrapy 的項目,然後在 spiders 的子目錄下建立一個 .py文件,該文件即是爬蟲的主要文件,注意:其中該文件的名字不能與該工程的名字相同,否則,之後調用跑這個爬蟲的時候將會出現錯誤,見ImportError。

2.具體寫.py文件:

[python] view plain copy

import scrapy

from scrapy import Request

import sqlite3

class rsSpider(scrapy.spiders.Spider): #該類繼承自 scrapy 中的 spider

name = “zhidao” #將該爬蟲命名為 「知道」,在執行爬蟲時對應指令將為: scrapy crawl zhidao

#download_delay = 1 #只是用於控制爬蟲速度的,1s/次,可以用來對付反爬蟲

allowed_domains = [“zhidao.baidu.com”] #允許爬取的作用域

url_first = ” #用於之後解析域名用的短字符串

start_urls = [“”, #python

“”, #database

“”, #C++

“”, #operator system

“” #Unix programing

] #定義初始的 url ,有五類知道起始網頁

#add database

connDataBase = sqlite3.connect(“zhidao.db”) #連接到數據庫「zhidao.db」

cDataBase = connDataBase.cursor() #設置定位指針

cDataBase.execute(””’CREATE TABLE IF NOT EXISTS infoLib

(id INTEGER PRIMARY KEY AUTOINCREMENT,name text,url text,html text)”’)

#通過定位指針操作數據庫,若zhidao.db中 infoLib表不存在,則建立該表,其中主鍵是自增的 id(用於引擎的docId),下一列是文章的標題,然後是url,最後是html

#url dataBase

cDataBase.execute(””’CREATE TABLE IF NOT EXISTS urlLib

(url text PRIMARY KEY)”’)

#通過定位指針操作數據庫,若zhidao.db中urlLib表不存在,則建立該表,其中只存了 url,保存已經爬過的url,之所以再建一個表,是猜測表的主鍵應該使用哈希表存儲的,查詢速度較快,此處其實也可以用一個外鍵將兩個表關聯起來

2. .py文件中的parse函數:

.py文件中的parse函數將具體處理url返回的 response,進行解析,具體代碼中說明:

[python] view plain copy

def parse(self,response):

pageName = response.xpath(‘//title/text()’).extract()[0] #解析爬取網頁中的名稱

pageUrl = response.xpath(“//head/link”).re(‘href=”(.*?)”‘)[0] #解析爬取網頁的 url,並不是直接使用函數獲取,那樣會夾雜亂碼

pageHtml = response.xpath(“//html”).extract()[0] #獲取網頁html

# judge whether pageUrl in cUrl

if pageUrl in self.start_urls:

#若當前url 是 start_url 中以一員。進行該判斷的原因是,我們對重複的 start_url 中的網址將仍然進行爬取,而對非 start_url 中的曾經爬過的網頁將不再爬取

self.cDataBase.execute(‘SELECT * FROM urlLib WHERE url = (?)’,(pageUrl,))

lines = self.cDataBase.fetchall()

if len(lines): #若當前Url已經爬過

pass #則不再在數據庫中添加信息,只是由其為跟繼續往下爬

else: #否則,將信息爬入數據庫

self.cDataBase.execute(‘INSERT INTO urlLib (url) VALUES (?)’,(pageUrl,))

self.cDataBase.execute(“INSERT INTO infoLib (name,url,html) VALUES (?,?,?)”,(pageName,pageUrl,pageHtml))

else: #此時進入的非 url 網頁一定是沒有爬取過的(因為深入start_url之後的網頁都會先進行判斷,在爬取,在下面的for循環中判斷)

self.cDataBase.execute(‘INSERT INTO urlLib (url) VALUES (?)’,(pageUrl,))

self.cDataBase.execute(“INSERT INTO infoLib (name,url,html) VALUES (?,?,?)”,(pageName,pageUrl,pageHtml))

self.connDataBase.commit() #保存數據庫的更新

print “———————————————–” #輸出提示信息,沒啥用

for sel in response.xpath(‘//ul/li/a’).re(‘href=”(/question/.*?.html)’): #抓出所有該網頁的延伸網頁,進行判斷並對未爬過的網頁進行爬取

sel = “” + sel #解析出延伸網頁的url

self.cDataBase.execute(‘SELECT * FROM urlLib WHERE url = (?)’,(sel,)) #判斷該網頁是否已在數據庫中

lines = self.cDataBase.fetchall()

if len(lines) == 0: #若不在,則對其繼續進行爬取

yield Request(url = sel, callback=self.parse)

aws上cpu利用率怎麼用python採集

#!/usr/bin/python

# -*- coding:utf8 -*-

__author__ = ‘chenwx’

def cpu_rate():

import time

def cpu_r():

f = open(「/proc/stat」,「r」)

for f_line in f:

break

f.close()

f_line = f_line.split(「 」)

f_line_a=[]

for i in f_line:

if i.isdigit():

i=int(i)

f_line_a.append(i)

total = sum(f_line_a)

idle = f_line_a[3]

return total,idle

total_a,idle_a=cpu_r()

time.sleep(2)

total_b,idle_b=cpu_r()

sys_idle = idle_b – idle_a

sys_total = total_b – total_a

sys_us = sys_total – sys_idle

cpu_a = (float(sys_us)/sys_total)*100

return cpu_a

# print cpu_rate()

如何運行Python腳本這是我上傳在AWS SSH會話的應用程序的一部分

secureCRT支持運行.js和.vbs以及.py格式的腳本,無奈mac上識別前兩個格式的腳本只能寫一寫Python腳本,

舉個簡單的例子,利用腳本直接ssh連接一台機器,

在View菜單中勾選Button Bar讓這個菜單在下方顯示出來,

在下方的Default右方右鍵出現一個菜單點擊New Button按鈕,在顯示框的Function一欄選擇Run Script中間選擇編寫好的.py文件 !

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的效果性要做好心理準備的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/183902.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-25 05:50
下一篇 2024-11-25 05:50

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論