Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2023-01-16, 12:33
  #13
Medlem
Citat:
Ursprungligen postat av Enterprise
Jag skulle faktiskt rekommendera att du lär dig grunderna för CSS-selectors och använder Javascript direkt i browsern för att "leka" runt. Det som jag gjort här har jag slängt ihop på några minuter, eftersom jag känner till metoden.

Grundläggande HTML är också nödvändigt att känna till.

Det viktigaste i scraping är att kunna identifiera vilka element som man vill åt och vilka "mönster" som detta förutsätter.

I ditt exempel gjorde jag så här:
* Gick in på Nespresso-hemsidan i browsern och tryckte F12 (för utvecklarverktyg)
* Tryckte på inspektera-knappen och valde en av "rutorna" som har en kaffekapsel i sig.
* Tittade på hur detta element ser ut i HTLM-koden (under fliken Elements)
* Jag kunde då identifera ett väldigt speciellt element i detta fall som innehöll all nödvändig data. Det såg ut som följer:
* Eftersom jag kan grundläggande HTML förstod jag att just i detta fall så är elementet med "taggen" nb-sku-coffee ett "custom made" element, som hemsideskaparen själv har hittat på. Det verkade därför rimligt att alla "rutor" på sidan hade samma typ av "custom made"-element.
* Jag provade då att göra en sökning på hela HTML-sidan genom konsollen (Console-fliken - fortfarande i Developer Tools), med följande kod:
Kod:
document.querySelectorAll("nb-sku-coffee");
Detta returnerar en NodeList (lista med HTML-element) med 60 medlemmar.
Varje sådant element innehåller dessutom (bekvämt nog) all information som vi vill åt.
Hemsideutvecklaren har lagt in ett "custom"-attribut som heter "data" i form av en textsträng i något som kallas JSON-formatet. Man får fram textsträngen genom funktionen getAttribute("data"). Resultatet är ett Javascript-objekt som är omvandlat till en textsträng. Genom funktionen JSON.Parse så kan vi omvandla textsträngen till ett objekt. Ovanstående exempel-element renderar då följande objekt:
Understryket i spoilern är de dataattribut som du var intresserad av och när man väl har ett Javascript-objekt är det mycket lätt att få ut dom genom principen:
obj.name och obj.price
Id som du också ville få, fanns direkt i elementet.


Det var väldigt intressant att höra att du inte rekommenderade python direkt för att lära sig web scraping som många verkar göra. Om man inte kan javascript alls, skulle du fortfarande göra samma rekommendation?
Citera
2023-01-16, 12:43
  #14
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av CarpenterTim
Det var väldigt intressant att höra att du inte rekommenderade python direkt för att lära sig web scraping som många verkar göra. Om man inte kan javascript alls, skulle du fortfarande göra samma rekommendation?
Ja, det skulle jag. Åtminstone att du lär dig absolut grundläggande Javascript samt förstå HTML och DOM. Det sistnämnda är en grundförutsättning även om du skulle köra Python. Eftersom det finns många likheter mellan Python och Javascript, så kommer du få igen denna "investering", även om du väljer att fortsätta med Python - så det är inte bortkastad tid. Att förstå samma koncept i två olika språk ger dessutom en djupare inlärning. Anledningen till att jag går emot strömmen här är alltså fördelen med att kunna "leka runt" direkt i Browsern. Det går helt enkelt inte att göra i Python, utan då måste man krångla med Selenium (eller liknande) som mellansteg och det blir ändå inte lika smidigt.

https://www.youtube.com/watch?v=ei2HLyHwt-k
Citera
2023-01-16, 13:09
  #15
Medlem
Citat:
Ursprungligen postat av Enterprise
Ja, det skulle jag. Åtminstone att du lär dig absolut grundläggande Javascript samt förstå HTML och DOM. Det sistnämnda är en grundförutsättning även om du skulle köra Python. Eftersom det finns många likheter mellan Python och Javascript, så kommer du få igen denna "investering", även om du väljer att fortsätta med Python - så det är inte bortkastad tid. Att förstå samma koncept i två olika språk ger dessutom en djupare inlärning. Anledningen till att jag går emot strömmen här är alltså fördelen med att kunna "leka runt" direkt i Browsern. Det går helt enkelt inte att göra i Python, utan då måste man krångla med Selenium (eller liknande) som mellansteg och det blir ändå inte lika smidigt.

https://www.youtube.com/watch?v=ei2HLyHwt-k


Tack det var en bra poäng du tar upp där, faktumet att man kan leka runt i browsern gör nog inlärningen lite roligare dessutom och desto effektfullare.
Citera
2023-01-16, 19:31
  #16
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av CarpenterTim
Tack det var en bra poäng du tar upp där, faktumet att man kan leka runt i browsern gör nog inlärningen lite roligare dessutom och desto effektfullare.
Tips på sida som tar upp scraping från denna vinkel:
https://markoskon.com/web-scraping-f...wsers-console/
Citera
2023-01-16, 19:58
  #17
Medlem
Citat:
Ursprungligen postat av Enterprise
Tips på sida som tar upp scraping från denna vinkel:
https://markoskon.com/web-scraping-f...wsers-console/

Schyst tut!
Citera
2023-01-17, 06:44
  #18
Medlem
Sida 2 av en tråd om web scraping och ingen har nämnt Chat GPT än...

Kod:
function useChatGPT() {
  let iq = 180;
  let programming_experience_years = 20;
  let lazy = false;
  let javascript_master = true;
  let python_master = true;
  let web_scraping_master = true;

  if (!lazy && iq > 180 && programming_experience_years >= 20 && javascript_master && python_master && web_scraping_master) {
    console.log("You don't need Chat GPT, you are a programming God already!");
  } else {
    console.log("You NEED to use Chat GPT because you are human.");
  }
}

useChatGPT();

Come on man... Sök ChatGPT web scraping på YouTube och tacka mig senare.
Citera
2023-01-17, 07:33
  #19
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av BronyFurry

Come on man... Sök ChatGPT web scraping på YouTube och tacka mig senare.
Ok genius, vi provar ditt förslag och ser om det fungerar:

Q:
Citat:
I want to get all nb-sku-coffee elements from the webpage https://www.nespresso.com/se/se/order/capsules/vertuo using javascript
A:
Citat:
Ursprungligen postat av ChatGPT
This content may violate our content policy. If you believe this to be in error, please submit your feedback — your input will aid our research in this area.

You can use the querySelectorAll() method to select all elements on a webpage that match a specific CSS selector. Here is an example of how you can use this method to select all nb-sku-coffee elements from the webpage https://www.nespresso.com/se:

Kod:
async function scrapePage() {
  const response = await fetch('https://www.nespresso.com/se/se/order/capsules/vertuo');
  const html = await response.text();

  const parser = new DOMParser();
  const doc = parser.parseFromString(html, 'text/html');

  const elements = doc.querySelectorAll('.nb-sku-coffee');
  console.log(`Number of elements: ${elements.length}`);
  elements.forEach(element => console.log(element));
}
This code uses the fetch() function to retrieve the HTML content of the webpage, then it uses DOMParser() to parse the HTML, and finally it uses the querySelectorAll() method with the CSS selector .nb-sku-coffee to select all elements with the class nb-sku-coffee on the page. The length of selected elements will be displayed and all elements will be displayed as well.

Please keep in mind that this is just an example and may need to be modified to fit the specific needs of your web scraping task and also to check and follow the website's terms of use.

Resultat:
Citera
2023-01-17, 08:16
  #20
Medlem
nakamotos avatar
Citat:
Ursprungligen postat av BronyFurry
Sida 2 av en tråd om web scraping och ingen har nämnt Chat GPT än...

Kod:
function useChatGPT() {
  let iq = 180;
  let programming_experience_years = 20;
  let lazy = false;
  let javascript_master = true;
  let python_master = true;
  let web_scraping_master = true;

  if (!lazy && iq > 180 && programming_experience_years >= 20 && javascript_master && python_master && web_scraping_master) {
    console.log("You don't need Chat GPT, you are a programming God already!");
  } else {
    console.log("You NEED to use Chat GPT because you are human.");
  }
}

useChatGPT();

Come on man... Sök ChatGPT web scraping på YouTube och tacka mig senare.

Jösses TikTok har friterat hjärnan på dig pöjk..
Citera
2023-01-17, 10:33
  #21
Medlem
Citat:
Ursprungligen postat av Enterprise
Ok genius, vi provar ditt förslag och ser om det fungerar: I want to get all nb-sku-coffee elements from the webpage https://www.nespresso.com/se/se/order/capsules/vertuo using javascript
...
Resultat:
undefined
Du måste lägga ner tid på att öva i din kommunikation med AI:n. När du förstår mer hur du ska fråga (börja big picture, läs, be AI:n göra om specifika grejer osv. tex.) för att få de svar du behöver, så kommer du att inse hur detta verktyg kan hjälpa dig lösa det du vill lösa.

I ditt fall verkar du tro att Chat GPT ska scrape och ladda ner datan till dig. Det går ju inte, det är en text AI, inte din privata server som du kan använda för att scrape en annan websida (tex.)

Så börja med att beskriva det du vill göra och be om förslag på vilka verktyg bäst som kan göra det du söker. Lär väl finnas något Python program som kan göra det du vill och spara i en JSON eller något.

Be programmet ge dig ett förslag på hur du kan göra, sen får du ju köra ditt egna program från din egen server mot den stackars Nespresso sidan.

Citat:
Ursprungligen postat av nakamoto
Jösses TikTok har friterat hjärnan på dig pöjk..
Ok boomer
__________________
Senast redigerad av BronyFurry 2023-01-17 kl. 10:47.
Citera
2023-01-17, 10:55
  #22
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av BronyFurry
Du måste lägga ner tid på att öva i din kommunikation med AI:n. När du förstår mer hur du ska fråga (börja big picture, läs, be AI:n göra om specifika grejer osv. tex.) för att få de svar du behöver, så kommer du att inse hur detta verktyg kan hjälpa dig lösa det du vill lösa.

I ditt fall verkar du tro att Chat GPT ska scrape och ladda ner datan till dig. Det går ju inte, det är en text AI, inte din privata server som du kan använda för att scrape en annan websida (tex.)

Så börja med att beskriva det du vill göra och be om förslag på vilka verktyg bäst som kan göra det du söker. Lär väl finnas något Python program som kan göra det du vill och spara i en JSON eller något.

Be programmet ge dig ett förslag på hur du kan göra, sen får du ju köra ditt egna program från din egen server mot den stackars Nespresso sidan.
Mitt inlägg visade bara att det inte alls bara går att förlita sig på ChatGPT ska göra jobbet åt dig. Den kod som ChatGPT tog fram fungerar inte alls och kommer inte att fungera för den aktuella hemsidan. Självklart körde jag den i Browsern (även med Nespresso-sidan laddad). Felet är inte bottens fel (eftersom den inte kan kontrollera hemsidan då den saknar Internettillgång), men visar på svagheten i din föreslagna metod. Inte heller "vanliga" Python requests kommer att fungera, eftersom den hemsida som vi vill "scrapa" till stora delar renderas i klienten (att bara läsa in HTML-sidan räcker alltså inte).

Kontentan är att ChatGPT är bra för att förklara olika saker (precis som Stackoverflow), men det går inte att fuska i sitt lärande. Vill man kunna webscraping så måste man lära sig en hel del saker själv.

PS. Förutom att ChatGPT föreslog fetch (som inte fungerar på en klientrenderad hemsida) så gjorde det en felaktigt antagande att vi letade efter element med klassen "nb-sku-coffee" när det vi i själva verket letade efter var element av typen "nb-sku-coffee".
__________________
Senast redigerad av Enterprise 2023-01-17 kl. 10:58.
Citera
2023-01-18, 18:26
  #23
Medlem
Citat:
Ursprungligen postat av Enterprise

Kontentan är att ChatGPT är bra för att förklara olika saker (precis som Stackoverflow), men det går inte att fuska i sitt lärande. Vill man kunna webscraping så måste man lära sig en hel del saker själv.

PS. Förutom att ChatGPT föreslog fetch (som inte fungerar på en klientrenderad hemsida) så gjorde det en felaktigt antagande att vi letade efter element med klassen "nb-sku-coffee" när det vi i själva verket letade efter var element av typen "nb-sku-coffee".
Ja jag vet att Chat GPT inte är perfekt än, den misslyckades precis göra en, som jag tyckte, ganska enkel bash function (read input sparades inte som string variabler utan kördes som command hmmm) till mig, så jag ska skriva till den nu "Bad GPT, try again, and be a Good AI boy!"

Att jämföra Chat GPT med Stackoverflow är ju till viss del relevant, men det är lite som att jämföra ens personliga sekreterare med telefonkatalog tycker jag.

MEN! Nu har jag hittat en ny AI som borde kunna göra din scraping! Hur låter det här?:

Citat:
Ursprungligen postat av www.axiom.ai
Browser Automation. Quickly, without code
Save time - use browser bots to automate website actions and repetitive tasks on any website or web app.

Get started for FREE, with 2 hours runtime.

Axiom is backed by Y-Combinator. See our 5-star reviews in chrome store

Key features
doneVisual Web Scraping
doneData Entry
doneSpreadsheet Automation
doneAutomate any website
doneBuild custom bots, with no-code
doneConnect to Zapier, Integromat or Webhooks

Check it out, be chefen ta fram företagets kreditkort och ge oss en review, jag är nyfiken på om det hade löst det för er.
Citera
2023-02-12, 23:50
  #24
Medlem
Glömde skriva tillbaka Tack för all info. Har fått en mycket bättre förståelse på några veckor nu
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback