le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Preliminari:
1. Vuoi vedere alcune foto che non ti faranno dormire nel cuore della notte, ma non hai le risorse...
2. Vuoi acquistare rapidamente i biglietti del treno durante l'alta stagione di viaggio durante le vacanze?
3. Quando fai acquisti online, vuoi individuare in modo rapido e preciso i prodotti con la migliore reputazione e qualità?
Cos'è un crawler:
- Scrivendo un programma, simula il processo di navigazione in Internet di un browser e quindi lascia che esegua la scansione dei dati da Internet.
Il valore del crawler:
-Applicazioni pratiche
-Occupazione
I crawler sono legali o illegali?
non è vietato dalla legge
Rischio di infrangere la legge
Rettili buoni, rettili maligni
I rischi portati dai crawler possono riflettersi nei due aspetti seguenti:
-I crawler interferiscono con il normale funzionamento dei siti Web visitati
-I crawler acquisiscono tipi specifici di dati o informazioni protetti dalla legge
Come evitare la sfortuna di finire nei guai quando si utilizza un crawler?
- Ottimizza frequentemente i tuoi programmi per evitare di interferire con il normale funzionamento dei siti Web visitati
- Quando si utilizzano e si diffondono i dati sottoposti a scansione, esaminare il contenuto sottoposto a scansione. Se vengono rilevati contenuti sensibili come segreti aziendali relativi all'utente, la scansione o la diffusione devono essere interrotte in modo tempestivo.
Classificazione dei crawler negli scenari di utilizzo
-Cingolo universale:
Una parte importante del sistema di scansione. Ciò che viene catturato è un'intera pagina di dati.
-Concentrarsi sui crawler:
È costruito sulla base del crawler universale. Ciò che viene catturato è il contenuto parziale specifico della pagina.
-Cinger incrementale:
Rileva gli aggiornamenti dei dati nel sito web. Verranno sottoposti a scansione solo gli ultimi dati aggiornati dal sito Web.
Lancia e scudo rettiliani
Meccanismo anti-arrampicamento
I siti web dei portali possono impedire ai crawler di eseguire la scansione dei dati dei siti web formulando strategie o mezzi tecnici corrispondenti.
Strategia anti-anti-arrampicata
Il programma crawler può violare il meccanismo anti-crawling nel sito web del portale formulando strategie o mezzi tecnici pertinenti per ottenere le informazioni del portale.
Protocollo robots.txt: +/robots.txt può essere visualizzato dopo qualsiasi sito web
Accordo tra gentiluomini. Stabilisce quali dati del sito web possono essere sottoposti a scansione dai crawler e quali dati non possono essere sottoposti a scansione.
protocollo http
- Concetto: è una forma di interazione dei dati tra il server e il client.
Informazioni comuni sull'intestazione della richiesta: identità del vettore della richiesta
- User-Agent:Connessione: una volta completata la richiesta, se disconnettersi o mantenere la connessione
Informazioni sull'intestazione della risposta comune
-Content-Type: il tipo di dati a cui il server risponde al client
Protocollo https:- Protocollo di trasferimento ipertestuale sicuro (sicurezza)
Crittografia
Crittografia a chiave simmetrica
Crittografia a chiave asimmetrica
Crittografia della chiave del certificato
- import requests
-
- # 检查当前脚本是否作为主程序运行
- if __name__ == "__main__":
- # 定义 KFC 官方网站获取门店列表信息的 URL
- url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'
-
- # 定义 HTTP 请求的头部信息,模拟浏览器请求
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'
- }
-
- # 提示用户输入一个位置信息,作为搜索门店的关键词
- keyword = input('enter location:') # 例如 "北京"
-
- # 循环请求第1页到第9页的数据
- for page in range(1,10):
- # 定义发送请求时所需的参数
- params = {
- 'op': 'keyword', # 操作类型为关键词搜索
- 'cname': '', # 城市名称(此处为空)
- 'pid': '', # 其他参数(此处为空)
- 'keyword': keyword, # 用户输入的关键词
- 'pageIndex': page, # 当前请求的页面索引
- 'pageSize': 1000, # 每页显示的门店数量
- }
-
- # 尝试发送请求并处理响应
- try:
- # 发送 GET 请求,请求参数包括 URL、参数和头部信息
- response = requests.get(url=url, params=params, headers=headers)
-
- # 检查响应状态码,如果不是 200,将引发 HTTPError 异常
- response.raise_for_status()
-
- # 获取响应内容
- page_text = response.text
-
- # 构建文件名,包括关键词、页码和 .html 扩展名
- filename = f'{keyword}_page_{page}.html'
-
- # 打开一个文件,以写入模式打开,并指定编码为 utf-8
- with open(filename, 'w', encoding='utf-8') as fp:
- # 将响应内容写入到文件中
- fp.write(page_text)
-
- # 打印一条消息,表明文件已经成功保存
- print(f'{filename} 保存成功!!!')
-
- # 捕获由 requests 库抛出的任何异常
- except requests.RequestException as e:
- # 打印异常信息
- print(f'请求错误: {e}')