Come accedere alla tabella specifica nel ispezionare utilizzando Python e BeautifulSoup per il web scraping

voti
0

Sto lavorando su raschiando web utilizzando Python e BeautifulSoup. Il mio scopo è quello di tirare i membri di dati da https://thehia.org/directory?&tab=1 . Ci sono circa 1.685 record.

Quando ho vista la fonte pagina sul mio Chrome, non riesco a trovare la tabella. Sembra tira dinamicamente i dati. Ma quando uso l'opzione ispezionare di Chrome, posso trovare la tabella membersTable nel div che ho bisogno.

entrare

Come posso utilizzare per accedere BeautifulSoup che membersTable che posso accedere al ispezionare.

È pubblicato 10/10/2019 alle 00:49
fonte dall'utente
In altre lingue...                            


2 risposte

voti
0

È possibile simulare la richiesta POST pagina fa per i contenuti quindi utilizzare hjson per gestire le chiavi non quotate nella stringa tirato fuori di risposta

import requests, hjson
import pandas as pd

data = {'formId': '3721260'}
r = requests.post('https://thehia.org/Sys/MemberDirectory/LoadMembers', data=data)
data = hjson.loads(r.text.replace('while(1); ',''))
total = data['TotalCount']
structure = data['JsonStructure']
members = hjson.loads(structure)
results = []
df = pd.DataFrame([[member[k][0]['v'] for k in member.keys()] for member in members['members'][0]]
            ,columns = ['Organisation', 'City', 'State','Country'])
print(df)

entrare descrizione dell'immagine qui

Risposto il 10/10/2019 a 08:54
fonte dall'utente

voti
0

Prova questo

   import requests
   from bs4 import BeautifulSoup


    url = "https://thehia.org/directory?&tab=1"
    response = requests.get(url)
    html = response.content

    soup = BeautifulSoup(html)
    table = soup.find('table', attrs={'class': 'membersTable'})

    row_list = []
    for row in table.findAll('tr',{'class':['normal']}):
        data= []
        for cell in row.findAll('td'):
            data.append(cell.text)
        row_list.append(data)

    print(row_list)
Risposto il 10/10/2019 a 04:57
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more