Anti-Pickup-Mechanismus (verzögertes Laden und Cookies)

Anti-Pickup-Mechanismus: Faules Laden von Bildern

  • Webmaster Material HD Bild herunterladen
  • Anti-Pickup-Mechanismus: Verzögertes Laden von Bildern, das auf einigen Bildwebsites häufig verwendet wird
    • Nur wenn das Bild tatsächlich im visuellen Bereich des Browsers angezeigt wird, wird das Pseudoattribut des img-Tags zu einem echten Attribut. Wenn die Anforderung gesendet wird, hat die Anforderungsanforderung keinen visuellen Bereich, daher müssen wir das img-Pseudoattribut analysieren Attributwert (Bildadresse, z. B. das Webmaster-Material ist visuell src, das Pseudoattribut ist src2, also crawlen Sie einfach das src2-Attribut)
  • Der Anti-Kletter-Mechanismus lernte:
    • Roboter
    • UA Tarnung
    • Erfassung dynamisch geladener Daten
    • Bild faul laden

Plätzchen:

  • Ist eine Reihe von Schlüssel-Wert-Paaren, die auf dem Client gespeichert sind.

  • Typische Anwendungen von Cookies im Web:

    ----- Kostenlose Passwort-Anmeldung

  • Die Verbindung zwischen Cookies und Crawlern

    • Wenn beim Anfordern einer Seite das Cookie nicht im Anforderungsprozess enthalten ist, können wir manchmal nicht die richtigen Seitendaten anfordern. Daher sind Cookies ein typischer Anti-Pickup-Mechanismus, der Crawlern gemeinsam ist.
  • Nachfrage: Kriechen Sie die Beratungsinformationen in das Schneeballnetz. https://xueqiu.com/

  • Analyse:

    • 1. Stellen Sie fest, ob die gecrawlten Beratungsdaten dynamisch geladen werden
      • Weitere verwandte Beratungsdaten werden dynamisch geladen. Wenn das Rad nach unten gleitet, werden mehr Beratungsdaten dynamisch geladen.
    • 2. Suchen Sie das von Ajax angeforderte Datenpaket, extrahieren Sie die angeforderte URL, und die Antwortdaten sind Konsultationsdaten in Form von JSON
import requests
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}
#这是雪球网发ajax获取数据的网址
url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20369434&count=15&category=-1'
page_text = requests.get(url=url,headers=headers).json()
page_text

结果:{'error_description': '遇到错误,请刷新页面或者重新登录帐号后再试',
 'error_uri': '/v4/statuses/public_timeline_by_category.json',
 'error_data': None,
 'error_code': '400016'}
  • Problem: Wir haben die gewünschten Daten nicht angefordert

  • Grund: Wir simulieren Browseranforderungen nicht streng.

    • Verarbeitung: Sie können die vom Browser übertragenen Anforderungsheader in das Header-Wörterbuch einfügen und die Header auf die Anforderungsoperation von Anforderungen anwenden.
  • Umgang mit Cookies

    • Methode 1: Manuelle Verarbeitung

      • Fügen Sie das Cookie in das Paketerfassungstool in den Kopfzeilen ein
      • Nachteile: Diese Methode ist ungültig, wenn die Cookies abgelaufen sind
    • Methode 2: Automatische Verarbeitung

      • Automatische Verarbeitung basierend auf dem Sitzungsobjekt
      • So erhalten Sie ein Sitzungsobjekt: request.Session () gibt ein Sitzungsobjekt zurück
      • Die Rolle des Sitzungsobjekts:
        • Das Objekt kann get- und post-Anfragen wie Anfragen aufrufen. Es ist nur so, dass, wenn ein Cookie generiert wird, während die Sitzung zum Senden einer Anforderung verwendet wird, das Cookie automatisch im Sitzungsobjekt gespeichert wird. Dies bedeutet, dass die Anforderung das nächste Mal ausgeführt wird, wenn das Sitzungsobjekt zum Initiieren der Anforderung verwendet wird Anfragen per Cookie gesendet.
      • Bei Verwendung von Sitzungen in Crawlern werden Sitzungsobjekte mindestens zweimal verwendet!
        • Zum ersten Mal wird die Sitzung verwendet, um die Cookie-Erfassung automatisch im Sitzungsobjekt zu speichern und eine Anforderung an die Startseite zu initiieren
        • Das zweite Mal senden Sie eine Anfrage mit einem Cookie.
      #创建好session对象
      session = requests.Session()
      #第一次使用session捕获且存储cookie,猜测对雪球网的首页发起的请求可能会产生cookie
      main_url = "https://xueqiu.com"
      session.get(main_url,headers=headers) #捕获且存储cookie
      url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20369434&count=15&category=-1'
      page_text = session.get(url=url,headers=headers).json() #携带cookie发起的请求
      

Ich denke du magst

Origin www.cnblogs.com/zzsy/p/12687591.html
Empfohlen
Rangfolge