Ich habe festgestellt, dass eine ehemals funktionierende Preisabfrage seit September letzten Jahres kein Ergebnis mehr liefert. Also lag der Verdacht nahe, dass sich die abgefragte Seite geändert hat. Dem war aber nicht so. Die gesuchte eindeutige Zeichenkette war immer noch im HTML-Source Code der abgefragten URL, den ich über meinen Browser aufgerufen hatte, vorhanden. Die definierte Regex funktioniert auch erfolgreich in einem Online-Regex-Parser. HTTPMOD liefert aber kein Ergebnis.
Ich habe mir dann in meinem HTTPMOD die HTTP-Response mit showBody anzeigen lassen und war überrascht, dass dort meine erwartete Zeichenkette nicht vorhanden ist.
Jetzt stellt sich mir die Frage, warum unterscheidet sich die HTTP-Response derselben URL in HTTPMOD und in meinem Browser?
Die abgefragte URL:
https://www.idealo.de/preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html
Die HTTPMOD-Regex:
reading01Regex content="Bereits ab ([\d]+)
Hier die ersten Zeilen vom Browser-HTML-Source-Code mit dem gesuchten Preis:
<!DOCTYPE html>
<html class="DE no-gec desktop no-js" lang="de-DE"><head>
<meta charset="UTF-8">
<link rel="canonical" href="https://www.idealo.de/preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html"/>
<meta name="robots" content="index, follow">
<meta name="description" content="Bereits ab 189,00 € ✓ Große Shopvielfalt ✓ Testberichte & Meinungen ✓ | Jetzt Canon MAXIFY MB5150 All in one Drucker günstig kaufen bei idealo.de"/>
<meta name="viewPort" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<link rel="preconnect" href="//cdn.idealo.com" crossorigin/>
<link rel="dns-prefetch" href="//cdn.idealo.com"/>
<link rel="preconnect" href="https://script.ioam.de" crossorigin/>
<link rel="dns-prefetch" href="https://script.ioam.de"/>
Und hier die ersten Zeilen der HTTPMOD-HTTP-Response:
<!DOCTYPE html>
<html class="DE no-gec desktop no-js" lang="de-DE"><head>
<meta charset="UTF-8">
<meta name="viewPort" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<link rel="preconnect" href="//cdn.idealo.com" crossorigin/>
<link rel="dns-prefetch" href="//cdn.idealo.com"/>
<link rel="preconnect" href="https://script.ioam.de" crossorigin/>
<link rel="dns-prefetch" href="https://script.ioam.de"/>
In der HTTPMOD-HTTP-Respose fehlt der entscheidene Teil mit der Preisinformation.
Mir ist nicht klar, warum sich Browser- und HTTPMOD-HTTP-Response so unterschiedlich verhalten und ich habe keinen Ansatz gefunden, wie ich mit HTTPMOD an meine gewünschte Preisinformation kommen kann.
Kann mir da jemand auf die Sprünge helfen?
Hier noch zur Vollständigkeit mein List des HTTPMOD (mit gekürztem http body):
Internals:
BUSY 0
DEF https://www.idealo.de/preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html 600
FUUID 60fbce7d-f33f-df6c-3945-ff0e135c0f8da741
Interval 600
MainURL https://www.idealo.de/preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html
ModuleVersion 4.1.10 - 6.7.2021
NAME CanonMaxify
NOTIFYDEV global
NR 574
NTFY_ORDER 50-CanonMaxify
STATE ???
TYPE HTTPMOD
httpbody <!DOCTYPE html>
<html class="DE no-gec desktop no-js" lang="de-DE"><head>
<meta charset="UTF-8">
<meta name="viewPort" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<link rel="preconnect" href="//cdn.idealo.com" crossorigin/>
<link rel="dns-prefetch" href="//cdn.idealo.com"/>
<link rel="preconnect" href="https://script.ioam.de" crossorigin/>
<link rel="dns-prefetch" href="https://script.ioam.de"/>
<link rel="shortcut icon" href="//cdn.idealo.com/storage/offerpage/assets/favicon-01ae3a7c0a539ff987a4.ico"/>
<title></title>
.....
..... http body gekürzt
.....
CompiledRegexes:
HTTPCookieHash:
JSESSIONID;:
Name JSESSIONID
Options Path=/; Secure; HttpOnly
Path
Value A572400996AD82425289BD645FB69224
SSLB;/:
Name SSLB
Options path=/; domain=.idealo.de
Path /
Value 1
ipcuid;:
Name ipcuid
Options Domain=.idealo.de; Expires=Fri, 29-Apr-2022 15:38:35 GMT; Path=/
Path
Value 014jacqy00kyymdcuu
sessionid;/:
Name sessionid
Options expires=Sat, 29-Jan-2022 17:13:35 GMT; path=/; domain=.idealo.de
Path /
Value ab39bf46-db9d-6f69-d617-0b7995135723
HttpUtils:
NAME
addr https://www.idealo.de:443
auth 0
code 429
compress 1
conn
data
displayurl https://www.idealo.de/preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html
header Cookie: JSESSIONID=8AE0F0582A47050B5E9880C3F7CDE519; SSLB=1; ipcuid=014jacqy00kyymdcuu; sessionid=ab39bf46-db9d-6f69-d617-0b7995135723
host www.idealo.de
httpheader HTTP/1.0 429 Too Many Requests
Server: idealoAppServer
RTSS: 1-1-4
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Encoding: gzip
Content-Type: text/html;charset=UTF-8
Content-Language: de-DE
Expires: Sat, 29 Jan 2022 15:38:35 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sat, 29 Jan 2022 15:38:35 GMT
Connection: close
Vary: Accept-Encoding
Set-Cookie: SSLB=1; path=/; domain=.idealo.de
Set-Cookie: ipcuid=014jacqy00kyymdcuu; Domain=.idealo.de; Expires=Fri, 29-Apr-2022 15:38:35 GMT; Path=/
Set-Cookie: JSESSIONID=A572400996AD82425289BD645FB69224; Path=/; Secure; HttpOnly
Set-Cookie: sessionid=ab39bf46-db9d-6f69-d617-0b7995135723; expires=Sat, 29-Jan-2022 17:13:35 GMT; path=/; domain=.idealo.de
httpversion 1.0
hu_blocking 0
hu_filecount 1
hu_port 443
hu_portSfx
ignoreredirects 1
loglevel 4
path /preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html
protocol https
redirects 0
timeout 2
url https://www.idealo.de/preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html
sslargs:
QUEUE:
READINGS:
2022-01-29 16:38:35 LAST_REQUEST update
2022-01-29 16:38:35 MATCHED_READINGS
2021-09-21 23:03:27 Preis 175
2022-01-29 16:38:35 UNMATCHED_READINGS Preis
REQUEST:
context reading
data
header
ignoreredirects 0
num unknown
retryCount 0
type update
url https://www.idealo.de/preisvergleich/OffersOfProduct/5035001_-maxify-mb5150-canon.html
defptr:
readingBase:
Preis reading
readingNum:
Preis 01
readingOutdated:
requestReadings:
update:
Preis reading 01
Attributes:
bodyDecode auto
reading01Name Preis
reading01Regex content="Bereits ab ([\d]+)
room Monitoring
showBody 1
showError 1
showMatched 1
Viele Grüße