[Python] list met id's scrapen BeautifulSoup

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • yannickie111
  • Registratie: Juli 2009
  • Laatst online: 14:34
Ha mede-tweakers,

Ik ben gestart met het mezelf bijbrengen van web scraping. met behulp van fora en allerlei tutorials heb ik al een mooi beginnetje kunnen maken.
De website die ik wil scrapen ziet er ongeveer zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<section class="test">
<div id=nummer class=dag>
<ul>
<li identificatie=6>
*de inhoud van de lijstbullet*
</li>
<li identificatie=7>
*de inhoud van de lijstbullet*
</li>
</ul>
</div>
</section>


De ul heeft dus geen class of id, de li heeft het wel.
Wat ik wil doen is uiteindelijk een csv output genereren van alle data binnen de verschillende li's, met per regel uiteraard de data van 1 li.

Nu ben ik al de hele dag bezig aan de hand van deze website. Helaas is in dit voorbeeld het deel van de website waar "alles van 1 product" in staat een div class met class id/name. In mijn geval is de li het deel waar alles van 1 product in staat. In dit voorbeeld werkt dus de regel code:
my_page = page_soup.findAll('div", {"class"} : "class-name"}).

Ik heb (volgens mij) alle mogelijke opties geprobeerd, maar loop toch echt vast. Wat doe ik verkeerd in de findAll functie van beautiful soup?

Eeuwige credits voor het verlossende antwoord!

Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Dan pak je toch
Python:
1
page_soup.findAll("li", {"identificatie": "6"})

o.i.d.?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • yannickie111
  • Registratie: Juli 2009
  • Laatst online: 14:34
Juup schreef op dinsdag 17 oktober 2017 @ 17:13:
Dan pak je toch
Python:
1
page_soup.findAll("li", {"identificatie": "6"})

o.i.d.?
Dank voor je reactie, maar helaas werkt dit dus niet :/
Ik heb het gestored in een variabele, en als ik dan len(variabele) opvraag geeft hij 0 terug. Ook variabele[0] geeft een foutmelding ipv de data die hij gescraped heeft.

Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Laate eens wat echte code zien en een linkje naar de daadwerkelijke html?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • 0stone0
  • Registratie: Maart 2015
  • Laatst online: 11-09 16:26

0stone0

01000010 01101111 01100101 !

Denk dat de fout ergens anders ligt, Als ik het HTML stukje online gooi, vervolgens met python de hierboven genoemde oplossing probeer, werkt het volgens mij prima

Afbeeldingslocatie: https://tweakers.net/ext/f/AVfjZOBijVtkOgPuo8meDgtk/full.png

[ Voor 10% gewijzigd door 0stone0 op 18-10-2017 18:31 ]

"~~Linux is only free if your time has no value"


Acties:
  • 0 Henk 'm!

  • yannickie111
  • Registratie: Juli 2009
  • Laatst online: 14:34
Dank voor jullie hulp allemaal, hier dan het voorbeeldje met een stuk echte code:

Ik wil graag een csv bestand maken met allen jumbo pick-up-points: https://www.jumbo.com/winkels (selecteer pick up point), met als source: view-source:https://www.jumbo.com/winkels

Dmv de inspect kom ik op dit stukje code (voor 1 locatie, elke <li></li> is een volgende locatie uiteraard;
jumbo_code
Hier lijkt het mij dat alle data er plain text in staat, maar als ik in de source kijk zie ik:

code:
1
2
3
4
5
6
7
 <li data-jum-store-id="{{uuid}}" class="jum-store-{{locationType}}">\
<img src="{{storeTypeImage}}" alt="{{storeTypeName}}" title="{{storeTypeName}}" />\
<h3>{{addressName}}</h3>\
<span class="jum-homestore-result-address">{{street}}&nbsp;{{street2}}<br />{{city}}</span>\
<div class="jum-store-expanded-info" data-jum-only-expanded="slide">\
</div>\
</li>


De echte data lijkt dus tussen brackets te staan, wat voor mij lijkt op jinja2 code, maar geen idee hoe ik dat zou kunnen scrapen.

[ Voor 3% gewijzigd door yannickie111 op 19-10-2017 09:03 ]


Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Ja die gegevens worden dynamisch opgehaald en op de website getoond na het klikken, vandaar dat je ze niet ziet met view-source:https://www.jumbo.com/winkels.

Als je toch al met Inspect bezig bent zou ik voorstellen om naar het network tabje te gaan en kijken wat er gebeurt als je op een winkel klikt. Dan zie je dat er dynamisch vanaf bijvoorbeeld https://www.jumbo.com/INT.../r1cKYx4XC3EAAAFI.6wYwKxK de gegevens worden opgehaald (in JSON vorm).

Deze zou je kunnen uitlezen en gebruiken zonder BeautifulSoup, ik weet alleen niet of Jumbo het toestaat dat jij deze gegevens van hun zomaar gaat gebruiken. Daarnaast zul je eerst willen achterhalen hoe je achter alle URL's van elke winkel komt.

[ Voor 4% gewijzigd door DanielG op 19-10-2017 10:41 ]

http://xyproblem.info/

Pagina: 1