2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Vorspiel:
1. Möchten Sie einige Bilder sehen, bei denen Sie mitten in der Nacht nicht schlafen können, haben aber nicht die nötigen Ressourcen ...
2. Möchten Sie in der Hauptreisezeit in den Ferien schnell Bahntickets kaufen?
3. Möchten Sie beim Online-Einkauf schnell und genau die Produkte mit dem besten Ruf und der besten Qualität finden?
Was ist ein Crawler:
- Simulieren Sie durch das Schreiben eines Programms den Prozess, bei dem ein Browser im Internet surft und ihn dann Daten aus dem Internet crawlen lässt.
Der Wert des Crawlers:
-Praktische Anwendungen
-Anstellung
Sind Crawler legal oder illegal?
ist gesetzlich nicht verboten
Gefahr eines Gesetzesverstoßes
Gute Reptilien, bösartige Reptilien
Die durch Crawler verursachten Risiken können sich in den folgenden zwei Aspekten widerspiegeln:
-Crawler beeinträchtigen den normalen Betrieb der besuchten Websites
-Crawler erfassen bestimmte Arten von Daten oder Informationen, die gesetzlich geschützt sind
Wie vermeidet man das Pech, beim Einsatz eines Crawlers in Schwierigkeiten zu geraten?
- Optimieren Sie regelmäßig Ihre eigenen Programme, um den normalen Betrieb der besuchten Websites nicht zu beeinträchtigen
- Überprüfen Sie bei der Verwendung und Verbreitung der gecrawlten Daten den gecrawlten Inhalt. Wenn vertrauliche Inhalte wie etwa Geschäftsgeheimnisse des Benutzers gefunden werden, muss das Crawling oder die Verbreitung rechtzeitig gestoppt werden.
Einordnung von Crawlern in Nutzungsszenarien
-Universal-Raupe:
Ein wichtiger Teil des Crawling-Systems. Was erfasst wird, ist eine ganze Seite mit Daten.
-Fokus auf Crawler:
Es ist auf der Basis einer Universalraupe aufgebaut. Was erfasst wird, ist ein bestimmter Teilinhalt der Seite.
-Inkrementeller Crawler:
Erkennen Sie Datenaktualisierungen auf der Website. Es werden nur die neuesten aktualisierten Daten der Website gecrawlt.
Reptilienspeer und -schild
Anti-Kletter-Mechanismus
Portal-Websites können Crawler daran hindern, Website-Daten zu crawlen, indem sie entsprechende Strategien oder technische Mittel formulieren.
Anti-Anti-Kletterstrategie
Das Crawler-Programm kann den Anti-Crawling-Mechanismus auf der Portal-Website knacken, indem es relevante Strategien oder technische Mittel formuliert, um an die Portalinformationen zu gelangen.
robots.txt-Protokoll: +/robots.txt kann nach jeder Website angezeigt werden
Gentleman's Agreement. Es legt fest, welche Daten auf der Website von Crawlern gecrawlt werden können und welche nicht.
http-Protokoll
- Konzept: Es handelt sich um eine Form der Dateninteraktion zwischen dem Server und dem Client.
Allgemeine Informationen im Anforderungsheader: Identität des Anforderungsträgers
- User-Agent:Connection: Nach Abschluss der Anfrage, ob die Verbindung getrennt oder aufrechterhalten werden soll
Allgemeine Informationen zum Antwortheader
-Content-Type: Der Datentyp, mit dem der Server dem Client antwortet
https-Protokoll: – Secure Hypertext Transfer Protocol (Sicherheit)
Verschlüsselung
Symmetrische Schlüsselverschlüsselung
Asymmetrische Schlüsselverschlüsselung
Verschlüsselung des Zertifikatschlüssels
- 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}')