Κοινή χρήση τεχνολογίας

Ενότητα αιτημάτων ανιχνευτή Python

2024-07-12

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

Προπαιχνίδι:
1. Θέλετε να δείτε μερικές φωτογραφίες που θα σας κάνουν να μην μπορείτε να κοιμηθείτε μέσα στη νύχτα, αλλά δεν έχετε τους πόρους...
2. Θέλετε να αγοράσετε γρήγορα εισιτήρια τρένου κατά την περίοδο αιχμής του ταξιδιού κατά τη διάρκεια των διακοπών;
3. Όταν κάνετε αγορές μέσω Διαδικτύου, θέλετε να εντοπίσετε γρήγορα και με ακρίβεια τα προϊόντα με την καλύτερη φήμη και ποιότητα;

Τι είναι ο ανιχνευτής:
- Γράφοντας ένα πρόγραμμα, προσομοιώστε τη διαδικασία ενός προγράμματος περιήγησης που σερφάρει στο Διαδίκτυο και, στη συνέχεια, αφήστε το να ανιχνεύσει δεδομένα από το Διαδίκτυο.

Η τιμή του ανιχνευτή:

-Πρακτικές εφαρμογές

-Εργασία

Είναι νόμιμα ή παράνομα τα crawlers;

δεν απαγορεύεται από το νόμο

Κίνδυνος παραβίασης του νόμου

Good Reptiles Κακόβουλα ερπετά

Οι κίνδυνοι που προκαλούνται από ανιχνευτές μπορούν να αντικατοπτρίζονται στις ακόλουθες δύο πτυχές:
-Οι ανιχνευτές παρεμβαίνουν στην κανονική λειτουργία των ιστοτόπων που επισκέπτεστε
-Οι ανιχνευτές καταγράφουν συγκεκριμένους τύπους δεδομένων ή πληροφοριών που προστατεύονται από το νόμο

Πώς να αποφύγετε την κακή τύχη να έρθετε σε μπελάδες όταν χρησιμοποιείτε έναν ερπυστριοφόρο;

- Βελτιστοποιείτε συχνά τα δικά σας προγράμματα για να αποφύγετε παρεμβολές στην κανονική λειτουργία των ιστοτόπων που επισκέπτεστε

- Κατά τη χρήση και τη διάδοση των δεδομένων που έχουν ανιχνευτεί, ελέγξτε το περιεχόμενο που έχει ανιχνευτεί.

Ταξινόμηση ανιχνευτών σε σενάρια χρήσης
-Καθολικός ανιχνευτής:
Ένα σημαντικό μέρος του συστήματος ανίχνευσης. Αυτό που καταγράφεται είναι μια ολόκληρη σελίδα δεδομένων.
-Εστίαση σε ανιχνευτές:
Είναι κατασκευασμένο με βάση τον καθολικό ερπυστριοφόρο. Αυτό που καταγράφεται είναι συγκεκριμένο μερικό περιεχόμενο στη σελίδα.

-Αυξητικός ανιχνευτής:
Εντοπίστε ενημερώσεις δεδομένων στον ιστότοπο. Μόνο τα πιο πρόσφατα ενημερωμένα δεδομένα από τον ιστότοπο θα ανιχνεύονται.


Ερπετοειδές δόρυ και ασπίδα
Μηχανισμός κατά της αναρρίχησης
Οι ιστότοποι πύλης μπορούν να αποτρέψουν τους ανιχνευτές από την ανίχνευση δεδομένων ιστότοπου διατυπώνοντας αντίστοιχες στρατηγικές ή τεχνικά μέσα.
Στρατηγική κατά της αναρρίχησης
Το πρόγραμμα ανίχνευσης μπορεί να σπάσει τον μηχανισμό κατά της ανίχνευσης στον ιστότοπο της πύλης διαμορφώνοντας σχετικές στρατηγικές ή τεχνικά μέσα, ώστε να αποκτήσει τις πληροφορίες της πύλης.


Πρωτόκολλο 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}')