Обмен технологиями

Модуль запросов сканера Python

2024-07-12

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

Прелюдия:
1. Хотите увидеть фотографии, от которых вы не сможете заснуть глубокой ночью, но у вас нет ресурсов...
2. Хотите быстро купить билеты на поезд в пик туристического сезона, во время праздников?
3. Совершая покупки в Интернете, вы хотите быстро и точно найти товары с лучшей репутацией и качеством?

Что такое краулер:
- Написав программу, смоделируйте процесс работы браузера в Интернете, а затем позвольте ему сканировать данные из Интернета.

Стоимость сканера:

-Практическое применение

-Работа

Являются ли краулеры законными или незаконными?

законом не запрещено

Риск нарушить закон

Добрые рептилии, злобные рептилии

Риски, создаваемые сканерами, можно отразить в следующих двух аспектах:
-Сканеры мешают нормальной работе посещаемых веб-сайтов.
-Сканеры собирают определенные типы данных или информации, которые защищены законом.

Как избежать неприятностей при использовании сканера?

- Часто оптимизируйте собственные программы, чтобы не мешать нормальной работе посещаемых веб-сайтов.

- При использовании и распространении просканированных данных проверяйте просканированный контент. Если обнаружен конфиденциальный контент, такой как коммерческая тайна, связанная с пользователем, сканирование или распространение необходимо своевременно прекратить.

Классификация сканеров по сценариям использования
-Универсальный гусеничный ход:
Важная часть системы сканирования. Захватывается целая страница данных.
-Сосредоточьтесь на сканерах:
Он построен на базе универсального гусеничного трактора. Захватывается конкретный частичный контент на странице.

-Инкрементальный гусеничный ход:
Обнаружение обновлений данных на веб-сайте. Будут сканироваться только самые последние обновленные данные с веб-сайта.


Рептилийское копье и щит
Механизм предотвращения подъема
Веб-сайты порталов могут помешать сканерам сканировать данные веб-сайта, сформулировав соответствующие стратегии или технические средства.
Стратегия борьбы с альпинизмом
Программа-сканер может взломать механизм защиты от сканирования на веб-сайте портала, сформулировав соответствующие стратегии или технические средства для получения информации о портале.


Протокол robots.txt: +/robots.txt можно увидеть после любого веб-сайта.
Джентльменское соглашение. Он определяет, какие данные на веб-сайте могут сканироваться сканерами, а какие нет.

http-протокол

- Концепция: это форма взаимодействия данных между сервером и клиентом.

Общая информация заголовка запроса: идентификатор носителя запроса.

- User-Agent:Connection: после завершения запроса следует отключить или сохранить соединение.
Общая информация заголовка ответа
-Content-Type: тип данных, который сервер отвечает клиенту.


Протокол https:- Протокол безопасной передачи гипертекста (безопасность)
Шифрование
Шифрование с симметричным ключом
Шифрование с асимметричным ключом
Шифрование ключа сертификата

текст

  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}')