Partage de technologie

Module de requêtes d'exploration Python

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Préliminaires :
1. Voulez-vous voir des photos qui vous empêcheront de dormir en pleine nuit, mais vous n'avez pas les ressources...
2. Souhaitez-vous acheter rapidement des billets de train pendant la haute saison touristique pendant les vacances ?
3. Lorsque vous effectuez des achats en ligne, souhaitez-vous localiser rapidement et précisément les produits ayant la meilleure réputation et la meilleure qualité ?

Qu'est-ce qu'un robot :
- En écrivant un programme, simulez le processus d'un navigateur surfant sur Internet, puis en le laissant explorer les données d'Internet.

La valeur du robot :

-Applications pratiques

-Emploi

Les robots d'exploration sont-ils légaux ou illégaux ?

n'est pas interdit par la loi

Risque d'enfreindre la loi

Bons reptiles Reptiles malveillants

Les risques posés par les robots d’exploration peuvent se refléter dans les deux aspects suivants :
-Les robots interfèrent avec le fonctionnement normal des sites Web visités
-Les robots capturent des types spécifiques de données ou d'informations protégées par la loi

Comment éviter la malchance d’avoir des ennuis lors de l’utilisation d’un robot ?

- Optimisez fréquemment vos propres programmes pour éviter d'interférer avec le fonctionnement normal des sites Web visités

- Lors de l'utilisation et de la diffusion des données analysées, examinez le contenu analysé. Si du contenu sensible tel que des secrets commerciaux liés à l'utilisateur est détecté, l'exploration ou la diffusion doit être arrêtée en temps opportun.

Classification des robots d'exploration dans les scénarios d'utilisation
-Chenille universelle :
Une partie importante du système d'exploration. Ce qui est capturé, c'est une page entière de données.
-Focus sur les robots :
Il est construit sur la base d'une chenille universelle. Ce qui est capturé est un contenu partiel spécifique de la page.

- Crawler incrémentiel :
Détecter les mises à jour des données sur le site Web. Seules les dernières données mises à jour du site Web seront explorées.


Lance et bouclier reptiliens
Mécanisme anti-escalade
Les sites Web portails peuvent empêcher les robots d’exploration d’explorer les données des sites Web en formulant des stratégies ou des moyens techniques correspondants.
Stratégie anti-escalade
Le programme d'exploration peut pirater le mécanisme anti-exploration du site Web du portail en formulant des stratégies ou des moyens techniques pertinents, afin d'obtenir les informations du portail.


Protocole robots.txt : ++robots.txt peut être vu après n'importe quel site Web
Accord de gentleman. Il précise quelles données du site Web peuvent être explorées par les robots et quelles données ne peuvent pas être explorées.

protocole http

- Concept : C'est une forme d'interaction de données entre le serveur et le client.

Informations communes d’en-tête de demande : Identité du porteur de la demande

- User-Agent:Connection : Une fois la demande terminée, s'il faut déconnecter ou maintenir la connexion
Informations d’en-tête de réponse communes
-Content-Type : le type de données auquel le serveur répond au client


Protocole https : - Protocole de transfert hypertexte sécurisé (sécurité)
Chiffrement
Chiffrement à clé symétrique
Chiffrement à clé asymétrique
Chiffrement de la clé du certificat

texte

  1. import requests
  2. # 检查当前脚本是否作为主程序运行
  3. if __name__ == "__main__":
  4. # 定义 KFC 官方网站获取门店列表信息的 URL
  5. url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'
  6. # 定义 HTTP 请求的头部信息,模拟浏览器请求
  7. headers = {
  8. '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'
  9. }
  10. # 提示用户输入一个位置信息,作为搜索门店的关键词
  11. keyword = input('enter location:') # 例如 "北京"
  12. # 循环请求第1页到第9页的数据
  13. for page in range(1,10):
  14. # 定义发送请求时所需的参数
  15. params = {
  16. 'op': 'keyword', # 操作类型为关键词搜索
  17. 'cname': '', # 城市名称(此处为空)
  18. 'pid': '', # 其他参数(此处为空)
  19. 'keyword': keyword, # 用户输入的关键词
  20. 'pageIndex': page, # 当前请求的页面索引
  21. 'pageSize': 1000, # 每页显示的门店数量
  22. }
  23. # 尝试发送请求并处理响应
  24. try:
  25. # 发送 GET 请求,请求参数包括 URL、参数和头部信息
  26. response = requests.get(url=url, params=params, headers=headers)
  27. # 检查响应状态码,如果不是 200,将引发 HTTPError 异常
  28. response.raise_for_status()
  29. # 获取响应内容
  30. page_text = response.text
  31. # 构建文件名,包括关键词、页码和 .html 扩展名
  32. filename = f'{keyword}_page_{page}.html'
  33. # 打开一个文件,以写入模式打开,并指定编码为 utf-8
  34. with open(filename, 'w', encoding='utf-8') as fp:
  35. # 将响应内容写入到文件中
  36. fp.write(page_text)
  37. # 打印一条消息,表明文件已经成功保存
  38. print(f'{filename} 保存成功!!!')
  39. # 捕获由 requests 库抛出的任何异常
  40. except requests.RequestException as e:
  41. # 打印异常信息
  42. print(f'请求错误: {e}')