當前位置:首頁 » 編程語言 » pythonrefresh

pythonrefresh

發布時間: 2025-09-09 09:08:23

python 爬蟲 ip池怎麼做

我們先來了解下Python中高層次的數據結構,動態類型和動態綁定,使得它非常適合於快速應用開發,也適合於作為膠水語言連接已有的軟體部件。用Python搭建一個可用的代理IP池其實並不難的。下面我們來看看搭建一個可用的代理IP池的代碼,可以分為以下的模塊:
1、ProxyGetter,代理獲取的相關代碼,可以抓取網站上的免費代理,經測試每天更新的可用代理只有六七十個,當然也支持自己擴展代理介面。
2、Api,api介面相關代碼,目前api是由Flask實現,代碼也非常簡單。客戶端請求傳給Flask,Flask調用ProxyManager中的實現,包括get/delete/refresh/get_all。
3、Util,存放一些公共的模塊方法或函數,包含GetConfig:讀取配置文件config.ini的類,ConfigParse:集成重寫ConfigParser的類,使其對大小寫敏感,Singleton:實現單例,LazyProperty:實現類屬性惰性計算。
4、DB,資料庫相關代碼,目前資料庫是採用SSDB。代碼用工廠模式實現,方便日後擴展其他類型資料庫。
5、Schele,定時任務相關代碼,現在只是實現定時去刷新代碼,並驗證可用代理,採用多進程方式。
6、Manager,get/delete/refresh/get_all等介面的具體實現類,目前代理池只負責管理proxy,日後可能會有更多功能,比如代理和爬蟲的綁定,代理和賬號的綁定等等。
7、其他文件,配置文件:Config.ini,資料庫配置和代理獲取介面配置,可以在GetFreeProxy中添加新的代理獲取方法,並在Config.ini中注冊即可使用。大家平常搭建一個可用的代理IP池也是按照這些的方法嗎?如果不是,也可以參考下的。如果想快捷方便有效可以使用http,IPIDEA全球http每日9000w的IP量包含全球240+地區的ip,足以符合需求量大的標准。

❷ python 爬網頁 遇到重定向怎麼處理

1.伺服器端重定向,在伺服器端完成,一般來說爬蟲可以自適應,是不需要特別處理的,如響應代碼301(永久重定向)、302(暫時重定向)等。具體來說,可以通過requests請求得到的response對象中的url、status_code兩個屬性來判斷。當status_code為301、302或其他代表重定向的代碼時,表示原請求被重定向;當response對象的url屬性與發送請求時的鏈接不一致時,也說明了原請求被重定向且已經自動處理。


2.meta refresh,即網頁中的<meta>標簽聲明了網頁重定向的鏈接,這種重定向由瀏覽器完成,需要編寫代碼進行處理。例如,某一重定向如下面的html代碼第三行中的注釋所示,瀏覽器能夠自動跳轉,但爬蟲只能得到跳轉前的頁面,不能自動跳轉。


<html>
<head>
<metahttp-equiv="refresh"content="0.1;url=http://www..com/"><!--本網頁會在0.1秒內refresh為url所指的網頁-->
</head>
</html>

解決辦法是通過得到跳轉前的頁面源碼,從中提取出重定向url信息(上述代碼第三行中的url屬性值)。一個具體的操作:①使用xpath('//meta[@http-equiv="refresh" and @content]/@content')提取出content的值 ②使用正則表達式提取出重定向的url值。



3.js重定向,通過javaScript代碼形式進行重定向。如下面javascript代碼

<scriptlanguage=javascript>window.location.href='http://www..com'</script>

對於這種方式的跳轉,由於可以實現該功能的JavaScript語句有多種形式,不能再使用正則表達式提取url,只能考慮載入JavaScript代碼來進行解決。

❸ python3.6.3 curses newwin 方法為何用不了

python 中curses封裝了c語言的curses,把c中復雜部分簡單化,比如addstr(),mvaddstr(),mvwaddstr()合並成了一個addstr()方法。

一、語法入門

1、打開和關閉一個curses 應用程序

在任何代碼執行前都先要初始化curses。初始化操作就是調用initscr()函數,如下。該函數根據不同設備返回一個window對象代表整個屏幕,這個window對象通常叫做stdscr,和c語言報錯一致。

import curses
stdscr = curses.initscr()

使用curses通常要關閉屏幕回顯,目的是讀取字元僅在適當的環境下輸出。這就需要調用noecho()方法

curses.noecho()

應用程序一般是立即響應的,即不需要按回車就立即回應的,這種模式叫cbreak模式,相反的常用的模式是緩沖輸入模式。開啟立即cbreak模式代碼如下。

curses.cbreak()

終端經常返回特殊鍵作為一個多位元組的轉義序列,比如游標鍵,或者導航鍵比如Page UP和Home鍵 。curses可以針對這些序列做一次處理,比如curses.KEY_LEFT返回一個特殊的值。要完成這些工作,必須開啟鍵盤模式。

stdscr.keypad(1)

關閉curses非常簡單,如下:

curses.nocbreak()#關閉字元終端功能(只有回車時才發生終端)stdscr.keypad(0)
curses.echo() #打開輸入回顯功能

調用endwin()恢復默認設置

curses.endwin()

調試curses時常見的問題就是curses應用程序結束後沒有重置終端到之前的狀態,把終端弄的一團糟。python中該問題經常是因為代碼有bug,發送異常引起的。比如鍵盤敲入字元後屏幕不回顯,這讓shell用起來非常困難。

為了避免這樣的問題,可以導入curses.wrapper模塊。這個函數做了一些初始化的工作,包括上面提到的和顏色的初始化。然後再執行你提供的函數,最後重置。而且被調用的函數寫在try-catch中。

2、打開新窗口和pad

通常調用initscr()獲取一個window對象代表全部屏幕。但是很多程序希望劃分屏幕為幾個小的窗口,為了重繪,擦出這些工作在小窗口中獨立進行。newwin()函數就是用來新建一個新的窗口,需要給定窗口尺寸,並返回新的window對象的。

begin_x = 20; begin_y = 7height = 5; width = 40win = curses.newwin(height, width, begin_y, begin_x)

注意:坐標通過是先y後x。這和別的坐標系統不同,但是根深蒂固,寫的時候就這樣現在改太晚嘍。

當調用一個方法去顯示或者擦除文本時,效果不會立即顯示。 為了減少屏幕重繪的時間,curses就先累積這些操作,用一種更有效的方式去顯示。就比如說你的程序先在窗口顯示了幾個字元,然後就清除屏幕,那就沒必要發送初始字元了,因為它們不會被顯示。

因此,curses需要你使用refresh()函數明確指出重繪窗口。

pad

pad是window的特例。pad可以比顯示的屏幕大,一次只顯示pad的一部分。創建一個pad很簡單,只需要提供寬高即可。但是刷新pad需要提供屏幕上顯示的部分pad的坐標。

getstr()獲取一個字元串。因為功能有限不常用。

curses.echo() # Enable echoing of characters# Get a 15-character string, with the cursor on the top lines = stdscr.getstr(0,0, 15)

熱點內容
建立網站需要什麼伺服器 發布:2025-09-09 16:30:11 瀏覽:255
為什麼安卓手機不能真正關閉後台 發布:2025-09-09 16:20:04 瀏覽:365
androidsuroot 發布:2025-09-09 16:01:29 瀏覽:347
原神密碼哪裡修改 發布:2025-09-09 16:01:20 瀏覽:226
安卓模擬器存檔放哪裡 發布:2025-09-09 15:38:56 瀏覽:110
編程貓太黑 發布:2025-09-09 15:20:19 瀏覽:852
資料庫答辯問題 發布:2025-09-09 15:17:54 瀏覽:818
安卓70可以玩什麼大型游戲 發布:2025-09-09 15:15:40 瀏覽:555
ideapython 發布:2025-09-09 14:49:42 瀏覽:216
sql創建外鍵語句 發布:2025-09-09 14:48:26 瀏覽:584