Hoppa till huvudinnehåll

Presentation och formatering av resultat

Tillgängliga format för att spara resultat

För att formatera resultat i A-Parser används mallmotorn Template Toolkit, vilket gör det enkelt att spara resultat från dataskrapning i olika format:

  • I textfiler som en lista: ett resultat per rad, via en separator, i valfritt format
  • I CSV-filer med möjlighet till vidare import i Excel, Google Docs etc.
  • I XML, JSON och andra format för datalagring
  • I HTML genom att generera sidor "on the fly"
  • I formatet SQL-dumpar för direktimport till en databas eller genom att skriva direkt till en SQLite-databas
  • I binärt format för att spara bilder (jpg, png, gif, ...), dokument (pdf, docx, ...), körbara filer och arkiv (exe, dmg, zip, ...) och alla andra typer av data

Redigering av resultatformat

Result format (Resultatformat) - gör det möjligt att formatera resultat till önskat utseende med hjälp av mallar, tillämpas för varje kombination av fråga-resultat.

Resultatformat
  • Allmänt resultatformat anges i fältet Result format
  • Resultatformat för varje scraper kan ställas in separat i scraperns inställningar under Result format

A-Parser stöder arbete med flera scrapers i samma uppgift, i det allmänna resultatformatet måste man ange från vilken scraper resultatet ska visas:

  • $p1 - resultat från den första scrapern (SE::GoogleSE::Google på skärmdumpen), $p2 - resultat från den andra scrapern (SE::BingSE::Bing på skärmdumpen)
  • Scraperns ordningsnummer visas till vänster om fältet för val av scraper
  • $p1.preset och $p2.preset innebär att man ska ta värdet för resultatformatet från inställningarna för motsvarande scrapers
  • I detta exempel kan $p1.preset ersättas med $p1.serp.format('$link\n') vilket ger samma effekt, men då kommer resultatformatet från inställningarna inte längre att användas

Result format (Resultatformat) kan anges i en smidig flerradsredigerare genom att klicka på motsvarande ikon i redigeringsfältet:

Redigeringsfält för resultatformat

I det allmänna resultatformatet finns följande variabler tillgängliga:

  • $query - frågan efter formatering
  • $query.* - alla variabler relaterade till frågan, beskrivna i artikeln Mallar i frågor
  • $p1, $p2, ... - variabler för åtkomst till skrapningsresultat för varje scraper separat (Visa möjliga resultat för varje scraper)
  • $p1.query, $p2.query, ... - frågor efter formatering med hänsyn till frågeformat som angetts i inställningarna för varje scraper

Inledande och avslutande text

För varje resultatfil anges en separat Inledande/Avslutande text:

  • För att skapa rubriker i en CSV-fil
  • För inledande och avslutande taggar i en XML-fil
  • För header, rubrik och footer i HTML-filer
  • För alla andra användningsområden

För att aktivera denna funktion måste man klicka på knappen More options (Fler alternativ) längst ner i Uppgiftsredigeraren

Fält för inledande och avslutande text

I inledande och avslutande text stöds användning av mallmotorn Template Toolkit, tillgängliga variabler:

  • $query - frågan efter formatering
  • $query.* - alla variabler relaterade till frågan, beskrivna i artikeln Mallar i frågor
anteckning

Viktigt! Dessa variabler är endast tillgängliga när varje fråga sparas i en separat fil eller när samma variabler används i Format för resultatfilnamn.

Format för resultatfilnamn

A-Parser tillåter användning av mallar även i namnen på resultatfilerna, vilket gör det möjligt att automatiskt skapa filer och mappar baserat på aktuellt datum, frågans ordningsnummer, själva frågan och i vilket annat format som helst.

Fältet Filnamn

I fältet File name (Filnamn) stöds följande variabler:

  • Alla variabler som är tillgängliga för Allmänt resultatformat
  • $queriesfile - sökväg och namn på filen med frågor, om frågorna anges via formuläret kommer den att innehålla queries_from_text.txt
  • $datefile - objekt från date-pluginet i mallmotorn Template Toolkit, konfigurerat för datumformatet %b-%d_%H-%M-%S, vid formatering ger det aktuell tid och datum som May-08_20-08-38, formatet kan ändras i Ytterligare inställningar

Som standard skapas filnamnet baserat på datum och tid vid tidpunkten för uppgiftens start

Komplext exempel

reports/$queriesfile/${query}.txt
  • En mapp som heter reports kommer att skapas
  • En undermapp med namnet på frågefilen kommer att skapas
  • I undermappen kommer det att skapas lika många filer som det finns frågor i uppgiften, själva frågan kommer att användas som filnamn med filtillägget .txt
tips

Variabeln $query skrivs i formatet ${query} för att förhindra att filtillägget .txt tolkas som en del av variabeln, läs mer i dokumentationen för mallmotorn Template Toolkit

⏩ Video. Namngivning av resultatfiler

I den här videon visar vi några exempel på namngivning av resultatfiler:

  1. Numrering av resultatfilen i enlighet med frågorna.
  2. Numrering av resultatfilen + del av frågenamnet.
  3. Namngivning av resultatfilen efter frågan, om frågan är en länk.

Visa tillgängliga resultat

Varje scraper har sin egen uppsättning resultat. Du kan se listan över tillgängliga resultat genom att föra muspekaren över scrapern; i ett verktygstips visas en lista över enkla resultat och arrayer med en lista över inbäddade element:

Lista över tillgängliga resultat i ett verktygstipsGult markerar resultat som är gemensamma för alla scrapers:
  • $query - frågan som skickats till scrapern efter formatering
  • $query.orig - originalfrågan (så som den såg ut i filen eller i inmatningsfältet)
  • $query.first - den första frågan vid användning av alternativ för inbäddad skrapning (Parse all results eller Parse to level)
  • $info.success - information om huruvida skrapningen av denna fråga lyckades
  • $info.retries - antal försök som använts för denna fråga
  • $info.stats - statistik över scraperns arbete för denna fråga
  • $pages.$i.data - array med obearbetade svar från servern för möjlighet att själv extrahera ytterligare information
Grönt markerar resultat som endast är tillgängliga för scrapern SE::BingSE::Bing:
  • $totalcount - antal resultat i sökresultatet
  • $ads med elementen $link, $anchor, $visiblelink, $snippet, $position och $page - array med en lista över annonser
  • $related.$i.key - array med en lista över relaterade sökord
  • $serp med elementen $link, $anchor, $snippet, $cache - array med sökmotorns huvudresultat
anteckning

Observera att för arrayer anges variabeln $i explicit, vilket betyder att det finns flera element och att de kan nås via index (positionsnummer) eller loopas igenom.

tips

Resultatet $pages.$i.data kommer automatiskt att ändras till $data för de scrapers som inte "bläddrar mellan sidor" inom en enda förfrågan. Till exempel DeepL::TranslatorDeepL::Translator.

Representation av resultat

A-Parser skapades för dataskrapning av alla typer av information, för detta infördes 2 typer av resultat:

  • Enkla resultat (Flat)
  • Resultatarrayer (Array)

Låt oss titta på varje typ med scrapern SE::GoogleSE::Google som exempel, skärmdump av sökresultaten:

Skärmdump av Google-sökresultat

Enkla resultat

Simple results (Enkla resultat) - när en fråga motsvarar ett resultat, exempel:

  • Antal resultat för en fråga ($totalcount)
  • Om frågan är en felskrivning ($misspell, visas inte på skärmdumpen)

Andra exempel:

  • Värdet av den översatta texten ($translated) i scrapern DeepL::TranslatorDeepL::Translator
  • Antal länkande domäner ($domains), trust-värde ($trustflow), backlinks ($backlinks) osv. i scrapern Rank::MajesticSEORank::MajesticSEO

Enstaka resultat sparas i vanliga variabler (prefix $ + namn med latinska tecken)

Resultatarrayer

Resultatarrayer - när en fråga motsvarar en lista med resultat, där varje element i listan i sin tur kan innehålla flera inbäddade element. Låt oss titta på ett exempel med Google-resultat - det representeras i scrapern av arrayen $serp, för tydlighetens skull använder vi en tabell och skriver ner de första 5 resultaten:

Länk ($link)Ankare ($anchor)Snippet ($snippet)
http://www.speedtest.net/Speedtest.net by Ookla - The Global Broadband Speed TestTest your Internet connection bandwidth to locations around the world with this interactive broadband speed test from Ookla.
http://en.wikipedia.org/wiki/Test_cricketTest cricket - Wikipedia, the free encyclopediaTest cricket is the longest form of the sport of cricket. Test matches are played between national representative teams with "Test status", as determined by the ...
http://www.speakeasy.net/speedtest/Speakeasy Speed TestSaturday 03-May 2014, 11:04:29 AM Your IP: The Speakeasy Speed Test requires Flash v7 or higher. Please update your browser. See Pricing Or Call Today
http://www.humanmetrics.com/cgi-win/jtypes2.aspPersonality test based on C. Jung and I. Briggs Myers type theoryHumanmetrics Jung Typology Test™ instrument uses methodology, questionnaire, scoring and software that are proprietary to Humanmetrics, and shall not be ...
http://test-ipv6.com/Test your IPv6.This will test your browser and connection for IPv6 readiness, as well as show you your current IPV4 and IPv6 address. ... Test your IPv6 connectivity. JavaScript ...

Varje position i sökresultatet skrivs in i en array med 3 inbäddade element - länk ($link), ankare ($anchor), snippet ($snippet)

Ett annat exempel - en lista över relaterade sökord, som sparas i arrayen $related:

Sökord ($key)
test wwe
depression test
test my speed
wonderlic test
test personality
act test
jiggle test
bipolar test

Som synes innehåller denna array bara ett inbäddat element - sökord ($key)

Numrering av arrayelement börjar med 0, exempel på åtkomst till enskilda element i en array:

  • $serp.0.link - första länken från sökresultatet
  • $serp.3.anchor - fjärde ankaret från sökresultatet
  • $related.0.key - första relaterade sökordet

Mer detaljerad information om formatering av enkla resultat och arrayer beskrivs nedan

Formateringsprinciper

Efter att scrapern har samlat in data i enkla resultat och arrayer måste de visas (sparas i en fil) i önskat format. För bekvämlighet och funktionalitet använder A-Parser mallmotorn Template Toolkit. Låt oss gå igenom ofta använda konstruktioner genom att använda verktyget Testa mallar. Välj ett projekt för scrapern SE::GoogleSE::Google:

Testning av mallar

På skärmdumpen visas 3 fält:

  • JSON - intern representation av data i scrapern
  • Template - mallen som används för att formatera resultatet
  • Result - den faktiskt omvandlade datan enligt den angivna mallen, det är i detta format som resultatet kommer att skrivas till filen

Genom att ändra mallen kan vi ändra hur resultatet ser ut, låt oss titta på följande mall:

Exempel

Text i fältet Template (Mall):

Rapport för fråga: $query    
Konkurrens: $totalcount
Lista över länkar, ankare och snippets:
$serp.format('$link $anchor\n$snippet\n\n')

Här är de grundläggande reglerna:

  • Vanlig text skrivs ut i resultatet som den är, utan ändringar
  • För att skriva ut enkla resultat måste man på rätt plats skriva ut variabeln som innehåller önskat resultat med prefixet $
  • För formatering av arrayer används metoden .format, mer om den nedan
  • \n står för radbrytning

Formatering av arrayer

Låt oss titta på konstruktionen:

$serp.format('$link $anchor\n$snippet\n\n')

Denna notation innebär att för arrayen $serp ska metoden .format anropas med parametern '$link $anchor\n$snippet\n\n'. Metoden .format sammanfogar alla element i arrayen till en sträng enligt mallen som anges i parametern. Själva mallen innebär: för varje element i arrayen $serp skriv ut länk och ankare separerade med ett mellanslag, sedan på en ny rad skriv ut snippet, följt av ytterligare två radbrytningar, vilket resulterar i en tom rad mellan resultaten.

Användning av mallmotor

Utskrift av variabler

För att använda mallmotorn måste man infoga taggarna [% %], och inuti taggarna skriva den logik som ska utföras.

CMS-utskrift med hjälp av en mallmotorResultat av CMS-utskrift med hjälp av en mallmotor

Genomgång av array

För att skriva ut element i en array används konstruktionen FOREACH:

[% FOREACH i IN p1.list;    
i.cms _ "\n";
END %]
tips

Mer information och exempel på mallmotorn finns i Funktioner i mallar i A-Parser.

Exempel

Utskrift av konkurrens

Utmatning av konkurrens per sökfråga (antal resultat per sökfråga) för alla scrapers för sökmotorer (SE::GoogleSE::Google, SE::YandexSE::Yandex...).

Resultatformat:

$query: $totalcount\n

Exempel på resultat:

test: 3910000000
viagra: 278000000
pvc-fönster: 3220000
...

Utskrift av länkar från sökmotorers sökresultat.

Resultatformat:

$serp.format('$link\n')

Exempel på resultat:

http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket
http://www.humanmetrics.com/cgi-win/jtypes2.asp
http://html5test.com/
http://test-ipv6.com/
...

Skrapning av sökförslag

Utskrift av sökförslag från sökmotorer.

Resultatformat:

$results.format('$suggest\n')

Exempel på resultat:

testserver tanks online
prov i ryska språket
pannkakssmet recept
testikel
pizzadeg med mjölk

Utskrift av data om begäran

I Net::HTTPNet::HTTP och scrapers baserade på den finns dessutom följande utdata tillgänglig:

  • $proxy - proxyn som begäran utfördes på

  • $headers - svarshuvuden (headers)

  • $code - svarskod

  • $reason - svarsstatus

Exempel

Utskrift av variabelvärden i JSON

Metoden .json för objekt

Utmatning av alla omdirigeringar för en sökfråga

För denna uppgift finns variabeln $response tillgänglig, vilken gör det möjligt att hämta alla variabler för sökfrågan, inklusive alla tidigare omdirigeringar.

Resultatformat:

$response.Redirects.format('$URI\n--> ')$response.URI

Resultat från scrapern:

Exempel

Utmatning i JSON med användning av mallmotor för att skriva datum

Exemplet visar utmatning av resultat från scrapern Net::WhoisNet::Whois i JSON-format.

Exempel

Resultatet kommer att innehålla domänen som kontrollerades, datumet vid tidpunkten för kontrollen och kontrollresultatet. Som framgår i Resultatformat hämtas datumet med hjälp av mallmotorn Template Toolkit.

Resultatformat:

{    
"domain": "$query",
"date": "[% USE d = date(format = '%d.%m.20%y', locale = 'C');d.format() %]",
"expire": "$p1.expire_date",
},

Exempel på resultat:

[{
"domain": "a-parser.com",
"date": "05.05.2021",
"expire": "25.02.2022",
},
{}]
Ladda ner exempel

Hur man importerar ett exempel i A-Parser

eJxtVG1v2jAQ/ivWCUQrZaxM2pdM+0BRkTYx6ErRPgQ0efWFeXXszHYYVZT/3nMS
EtruQyTf23P33EtK8Nw9uluLDr2DOCkhr98QwxJ9HP/4baRj79jNkWe5QjaBCHJu
HdrgnZw5kUFgygvlYbeLgFDo6ebGZjyglVvNGNuCMBmXegsxvQd/C7RPW4hONu6x
sSRDtlnfMME+s6C8SGsYkkZDMR5m4w9Xw6dRxJR54FQUqWejy09i3LhdXLLhrkfF
Yy5tizvIJ+NG/tkkI6eKPugKXvMD3hsqOJUKe/WcpCXPkAyDEBmsXbqxP3py5UJI
L43mqmEdOtR3YqMl0aV4bcg3MJfo5tZkfa66HaeOJW17gCCKOvZ7EwNxypXDCByV
OucUKl5bpEfLvbGrPNRD+hKMniq1wAOq3q3Gvy6kEjTOaUpBX9rA/7us3mBUHb3z
VAe0/yzVALG3BYHUwvXqWx8kzMLsibj4RbSVzKQn2c1MocOuXJHyETHvWrYMLcuM
xS5LA9zmpvXNUQtyTPqJTfNWV1Y7eEXkxWBeKh+MTuV+RRSsFHjyLPQ93clKz0y4
gsBMF0rRYBze9Qsyde0ggtC18E3wrE4R2Lf3EoE3Rrmva9KF+7KSFvBjKDCjXp5n
bSFp69XmbnFugbOlqrMnJ/F9c3Ku3tLAkNZ3b2ixiFq16865+weU50cdlxWN64+7
bZwCdK2MgDrkaBYQT6pnHsF5pA==

Kontrollera om en webbplats finns i Google Nyheter för ett sökord

Exempel på kontroll av webbplats i Google Nyheter för ett sökord

Resultatformat:

[% linksToOneString = p1.serp.format('$link. ');
matches = linksToOneString.match('.+?(' _ p1.query.domain _ ').+?');

IF matches.0;
p1.query.orig _';yes' _ "\n";
ELSE;
p1.query.orig _';no' _ "\n";
END %]

Exempel på resultat:

google scraper|a-parser.com;no
google scraper|forbes.ru;yes
Ladda ner exempel

Hur man importerar ett exempel i A-Parser

eJylVVFv2jAQ/iuR1YpWo1EQ7UuqaaIMpk6stKV9AoRccqQeju3aCQVR/vvOTkjS
ruNlEoq4u+++O9+dz1uSUrM0txoMpIaE4y1R7j8JyagXhj+kjDl4Z173GeZLL5IJ
ZcLDX2EQ8Go8WNNEcSBNoqg2oC3PuOaOhggWNOMpaW5JulGA7HIFWrPIGlmEsqIx
zGUmEENWlGeIae3+DccwqkIS8WrIATRnYmkUumCQGn9wwCXmNfr7x0Psz3Wozg4m
omtQTkU8O4xXWq43GlLNwNQ8W0EQkN102iTYLKyr6UudUNu08fFEuNM+yKGAETqK
2PvqqZZvK+YvHO6kcWQxvtc4vZwIVMyfwSDqo6PvTCcN/8u3k4Y3sywvGeiNX8zB
DAnQ5lg+CTvzJmSCFuLM132viOQHqCi5pGYIbVxuwDTeufQGo95nQCE/4G6+T8Tx
lJTFGNEVPEgsxoK54dvXCKUbmtj6HUU0BWvdF+TUT9d28mgUsZRJQXleUTvKVZUf
BXvJx00i1maFbelrmaAqBUfgUt13Y0yOnEyQInO+d7kPCReUG2gSg6n2KSYSlZZU
Z2hgKWiaSj1UNh1Ub4kUHc4HsAJe+Tv6q4zxCK9dZ4FO14Xj55DhXxy78nT1UDiG
rxpzKFmcdDX8VXlFciBjPHj0hMfmLGEpyqbrrnBIAlQuAVRZshtbskRqKMMUzEV0
XEEKhJ35qmMdVaneHcMtKiMzPbfUeY2b+ztk3PSNFGe2IQZwKeUFIW8WJG1f9i75
IJPprmpyLQYq51IsWDwsruV+HDLxgGtzKLrSLj5bJpFxjk02cF8NW8cUTbVCdd6P
zl0XwlZyvyQxScnNz1F+cqUZ5nxhE0ywMfWoBeWccv54P6hbSDWgKEyy4Ly9cN/A
fs/zb8tpLnKN54S2E9rV//bTGz3L97o/lwneuf/iwvv2hBsAt55NO4VYYh9sN939
CUkvf0vssoO1oiKCKL8SO9ej4oEp36tt/ZkJtzucy9/mNgfZqlsI6rB9BofOPil/
AGn6WSM=

Utmatning av timestamp-värde i datumformat

Ibland händer det att det inte finns något vanligt datum i resultaten, men det finns ett timestamp-värde som i scrapern Social::Instagram::TagSocial::Instagram::Tag. Detta värde kan presenteras i datumformat med hjälp av mallmotorn Template-Toolkit.

Exempel på utskrift av timestamp-värde i datumformat

Resultatformat:

[% USE date;

query.orig _ ": total posts - " _ postscount _ "\nPosts:\n";

FOREACH i IN posts;
d = date.format(i.time, format => '%d.%m.20%y');
i.link _ " - " _ d _ ":\n";
i.text _ "\n";
END %]

Exempel på resultat:

sport: total posts - 96500663
Posts:
https://www.instagram.com/p/COfJHshAkeD/ - 05.05.2021:
Quelques exemples de notre nouvelle campagne de communication personnalisable avec le nom des clubs 😀

Vous préférez quel visuel : 1, 2, 3, 4, 5 ? 🤔

#clubnormand #tennis #padel #beachtennis #tenniscourt #padelcourt #beachtenniscourt #lnt #LigueNormandieTennis #🎾 #sport #normandie #normandietourisme
https://www.instagram.com/p/COfJG7olavg/ - 05.05.2021:
💥 Sau màn lật đổ “Bà già” thành công, Nửa xanh thành Milan chính thức vượt qua Nửa đỏ về số lần lên đỉnh nước Ý nhiều nhất lịch sử.
-----------------------------
➖ Website: https://webthethao247.com/
➖ https://g.page/webthethao247?share
#wtt247 #webthethao247 #thethao #sport #bongda #SerieA #InterMilan #Juventus #ACMilan
https://www.instagram.com/p/COfJG1Hg7ax/ - 05.05.2021:
Which Skill was better 1 or 2? 🤔👇
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
________________________________________
Leave a Like 👍🏽
Subscribe for more 🔔
Leave your thoughts in the Comments  💬
________________________________________
❌Ignore the Tags ❌
#football #soccer #fussball #futbol #fifa #championsleague #bundesliga #ucl #footballmemes #goal #transfer #sports #penalty #ultimateteam #pacybits #fut #ultras #laliga #freekick #referee #sport #calcio #messi #ronaldo #skills #premierleague #foul #footballseason
https://www.instagram.com/p/COfIlXqhfAa/ - 05.05.2021:
Be Fuckin’ Ready 🤣🤣🤣

Get ready to fly!!!! 🏐🏐🏐🏐

Follow - @crackonkings

#beachball #nalin&kane #trance #music #90s #onyerhead #festival #party #afterparty #love #summer #uk #happy #sesh #crackon #football #sport #festivaloutfit #festivalfashion #sun #dj #dancing #club #festivalgirl #house #techno #rave
...
Ladda ner exempel

Hur man importerar ett exempel i A-Parser

eJx1VNtuGjEQ/RXLCkoj0VVSqS9bpRKhoFJRNuXyxKLKxQa58dqO7aVBiH/vjPeW
pM0+7RzPzDlzsU80MP/g753wIniark/Uxn+a0oXZSqbSdKJ9YHvHijRdsj15T5ay
EAAVlgRDOAuCiCewlKB9apnzwmGm9RsJwImLHStVoP0TDUcrgMschHOSYwbJwd4Z
V7AASqIbPTBVotu6R1aLUeT8lOtcP5bCHRPj5J78JDlNQVBgiljjgwehOQU4GltT
6hB98lzfI5LCT05jlnE2Hw2GX4kkk1nljnDg5DYyJZWYdzIJUHifVCa5/Uwuezzp
FcmH697x8gpiCHwyUVI/RKpGAa/ENYSVVxBPraAIj2ZfSG9Dz5tNn1aF+3Fkgrov
7E1Sz6U9XLCDWBrslYydb2LAmrECu3WB6vG0qeAqCU+YgXEugzSaqYoBx9WxrrR8
jN3WBnyxxVL4sTMFQKi6Bo+NujW9iDaFFGWM/VHF0HTHlBd96kHqmIEQ/vpEBuFY
MC6zqAfwEzV6oNRUHITq3GL+u1IqDrs12EHQpA78v0v2T45zW95zKti6Pw40tFmi
dZd976K4mZo9VM5/Qd1KFjKA7Ye4T4BeA/gghG17NsOeFcaJlqbOXLPDTbNC44p3
IxvYDnpRxouxvAS3Ru/kPquvTeNZ6iVc50wPDV5HrEuXSsFYvJh36zHw9RjQ6AS+
Dh5GCiy9ua40GKP8t0Ul1ToJ6/cRBRbQyeesdcotU2o1nz4/wUAfjM30yLlX44uL
Qb01Drm2sLx7A2sFpZ037cvSPlWnt96X9HSGuf3291UAFonugEG3PAyFpjfnvwdy
t1Y=

Andra exempel

Exempel på ofta använda mallar