informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Pemanasan:
1. Apakah Anda ingin melihat beberapa gambar yang membuat Anda tidak bisa tidur di tengah malam, tetapi Anda tidak memiliki sumber daya...
2. Ingin cepat membeli tiket kereta api saat peak travel season saat hari raya?
3. Saat berbelanja online, apakah Anda ingin menemukan produk dengan reputasi dan kualitas terbaik dengan cepat dan akurat?
Apa itu perayap:
- Dengan menulis sebuah program, simulasikan proses browser menjelajahi Internet, dan kemudian membiarkannya merayapi data dari Internet.
Nilai perayap:
-Aplikasi praktis
-Pekerjaan
Apakah crawler legal atau ilegal?
tidak dilarang oleh undang-undang
Resiko melanggar hukum
Reptil Baik Reptil Berbahaya
Risiko yang ditimbulkan oleh crawler dapat tercermin dalam dua aspek berikut:
-Perayap mengganggu pengoperasian normal situs web yang dikunjungi
-Perayap menangkap jenis data atau informasi tertentu yang dilindungi undang-undang
Bagaimana cara menghindari nasib buruk mendapat masalah saat menggunakan crawler?
- Sering-seringlah mengoptimalkan program Anda sendiri untuk menghindari gangguan pada pengoperasian normal situs web yang dikunjungi
- Saat menggunakan dan menyebarkan data yang dirayapi, tinjau konten yang dirayapi. Jika ditemukan konten sensitif seperti rahasia bisnis yang terkait dengan pengguna, perayapan atau penyebaran harus dihentikan tepat waktu.
Klasifikasi crawler dalam skenario penggunaan
-Perayap universal:
Bagian penting dari sistem perayapan. Apa yang ditangkap adalah seluruh halaman data.
-Fokus pada crawler:
Itu dibangun berdasarkan perayap universal. Apa yang ditangkap adalah sebagian konten tertentu di halaman tersebut.
-Perayap tambahan:
Mendeteksi pembaruan data di website. Hanya data terbaru yang diperbarui dari situs web yang akan dirayapi.
Tombak dan Perisai Reptil
Mekanisme anti pendakian
Situs web portal dapat mencegah perayap merayapi data situs web dengan merumuskan strategi atau cara teknis yang sesuai.
Strategi anti-anti-pendakian
Program perayap dapat memecahkan mekanisme anti-perayapan di situs portal dengan merumuskan strategi atau cara teknis yang relevan, sehingga dapat memperoleh informasi portal.
protokol robots.txt: +/robots.txt dapat dilihat setelah situs web mana pun
Persetujuan Tuan-tuan. Ini menetapkan data mana di situs web yang dapat dirayapi oleh crawler dan data mana yang tidak dapat dirayapi.
protokol http
- Konsep: Merupakan bentuk interaksi data antara server dan klien.
Informasi header permintaan umum: Identitas pembawa permintaan
- Agen-Pengguna: Koneksi: Setelah permintaan selesai, apakah akan memutuskan atau mempertahankan koneksi
Informasi header respons umum
-Content-Type: Tipe data yang ditanggapi server ke klien
protokol https: - Protokol Transfer Hiperteks Aman (keamanan)
Enkripsi
Enkripsi kunci simetris
Enkripsi kunci asimetris
Enkripsi kunci sertifikat
- 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}')