Подскажите примеры парсинга HTML страниц.
Пробовал через https://www.purebasic.fr/english/viewtopic.php?t=66256
И через регулярные выражения не находит.
StartPa.s = "<div class="+Chr(34)
EndPA.s = "</div>"If d = 0
pattern$ = "(?<=()"+StartPa+")\S(.*?)(?=()"+EndPA+")"
Else
pattern$ ="()"+StartPa+"\S(.*?)()"+EndPA
EndIf
Когда встречаются такие куски через ReceiveHTTPMemory
<option
value="created-ascending"
>
Date, old To new
</option>
Страница https://greenroninstore.com/collections/m-m-pdfs
P.S. Вот составил регулярку, но она не доходит до конца.
А если заменить 0 на 1 в ReadRegular, то она останавливается на 99666 и дальше не идет, если удалить часть текста что идет выше она идёт дальше.
Понял что проблема в Юникодных символах, пробовал через UTF8(), Ascii() но все равно не получается дойти до конца.
Код:Procedure.s ReadHTML(sURL.s) If InitNetwork() *Buffer = ReceiveHTTPMemory(sURL) If *Buffer Size = MemorySize(*Buffer) HTML_MEM.s = PeekS(*Buffer, Size, #PB_UTF8|#PB_ByteLength) FreeMemory(*Buffer) ProcedureReturn HTML_MEM Else ProcedureReturn "False" EndIf ProcedureReturn "False" EndIf EndProcedure Procedure ReadRegular(URL_Text.s, Pattern.s, type.a = 0) If CreateRegularExpression(0, Pattern) If type = 0 URL_Text_Result.S = ReplaceRegularExpression(0, URL_Text, "+") Debug URL_Text_Result ElseIf type = 1 If ExamineRegularExpression(0, URL_Text) While NextRegularExpressionMatch(0) Debug t : t+1 Debug RegularExpressionError() Debug "Match: " + RegularExpressionMatchString(0) Debug " Position: " + Str(RegularExpressionMatchPosition(0)) Debug " Length: " + Str(RegularExpressionMatchLength(0)) Wend EndIf EndIf FreeRegularExpression(0) Else Debug RegularExpressionError() EndIf EndProcedure sURL.s = "https://greenroninstore.com/collections/m-m-pdfs" URL_Text.s = ReadHTML(sURL.s) type = 0 If Not URL_Text = "False" ; Debug URL_Text Pattern.s = PeekS(?NumericalData, ?NumericalDataE-?NumericalData, #PB_Ascii) ReadRegular(URL_Text, Pattern, 0) EndIf End DataSection NumericalData: Data.a $28, $3C, $7C, $3C, $5C, $2F, $29, $28, $5B, $21, $2D, $30, $2D, $39, $61, $2D, $7A, $41, $2D, $5A, $5F, $5D, $2B, $29, $28, $5C, $73, $2B, $28, $3F, $3A, $28, $5B, $2D, $30, $2D, $39, $61, $2D, $7A, $41, $2D, $5A, $5F, $5D, $2B, $28, $3D, $22, $28, $28, $5B, $30, $2D, $39, $20, $61, $2D, $7A, $41, $2D, $5A, $2D, $5F, $2E, $2C, $3D, $3A, $3B, $27, $2B, $2F, $26, $23, $3F, $40, $24, $7B, $7D, $5C, $5B, $5C, $5D, $5D, $2B, $29, $7C, $29, $22, $7C, $29, $28, $5C, $73, $2B, $7C, $29, $29, $29, $2B, $28, $5B, $30, $2D, $39, $61, $2D, $7A, $41, $2D, $5A, $2F, $5D, $2B, $7C, $29, $3E, $7C, $3E, $29 NumericalDataE: EndDataSection
Отредактировано @ZOLO@ (04.01.2025 20:46:28)