моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Прелюдия:
1. Хотите увидеть фотографии, от которых вы не сможете заснуть глубокой ночью, но у вас нет ресурсов...
2. Хотите быстро купить билеты на поезд в пик туристического сезона, во время праздников?
3. Совершая покупки в Интернете, вы хотите быстро и точно найти товары с лучшей репутацией и качеством?
Что такое краулер:
- Написав программу, смоделируйте процесс работы браузера в Интернете, а затем позвольте ему сканировать данные из Интернета.
Стоимость сканера:
-Практическое применение
-Работа
Являются ли краулеры законными или незаконными?
законом не запрещено
Риск нарушить закон
Добрые рептилии, злобные рептилии
Риски, создаваемые сканерами, можно отразить в следующих двух аспектах:
-Сканеры мешают нормальной работе посещаемых веб-сайтов.
-Сканеры собирают определенные типы данных или информации, которые защищены законом.
Как избежать неприятностей при использовании сканера?
- Часто оптимизируйте собственные программы, чтобы не мешать нормальной работе посещаемых веб-сайтов.
- При использовании и распространении просканированных данных проверяйте просканированный контент. Если обнаружен конфиденциальный контент, такой как коммерческая тайна, связанная с пользователем, сканирование или распространение необходимо своевременно прекратить.
Классификация сканеров по сценариям использования
-Универсальный гусеничный ход:
Важная часть системы сканирования. Захватывается целая страница данных.
-Сосредоточьтесь на сканерах:
Он построен на базе универсального гусеничного трактора. Захватывается конкретный частичный контент на странице.
-Инкрементальный гусеничный ход:
Обнаружение обновлений данных на веб-сайте. Будут сканироваться только самые последние обновленные данные с веб-сайта.
Рептилийское копье и щит
Механизм предотвращения подъема
Веб-сайты порталов могут помешать сканерам сканировать данные веб-сайта, сформулировав соответствующие стратегии или технические средства.
Стратегия борьбы с альпинизмом
Программа-сканер может взломать механизм защиты от сканирования на веб-сайте портала, сформулировав соответствующие стратегии или технические средства для получения информации о портале.
Протокол robots.txt: +/robots.txt можно увидеть после любого веб-сайта.
Джентльменское соглашение. Он определяет, какие данные на веб-сайте могут сканироваться сканерами, а какие нет.
http-протокол
- Концепция: это форма взаимодействия данных между сервером и клиентом.
Общая информация заголовка запроса: идентификатор носителя запроса.
- User-Agent:Connection: после завершения запроса следует отключить или сохранить соединение.
Общая информация заголовка ответа
-Content-Type: тип данных, который сервер отвечает клиенту.
Протокол https:- Протокол безопасной передачи гипертекста (безопасность)
Шифрование
Шифрование с симметричным ключом
Шифрование с асимметричным ключом
Шифрование ключа сертификата
- 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}')