Jak získat přístup konkrétní tabulky je znázorněno v Zkontrolujte, zda používáte Python a BeautifulSoup pro web škrábání

hlasů
0

Já jsem pracoval na webové škrábání pomocí Python a BeautifulSoup. Mým cílem je vytáhnout členům data z https://thehia.org/directory?&tab=1 . Tam je asi 1685 záznamů.

Když jsem zobrazit zdrojový kód stránky na svém Chrome, nemohu najít v tabulce. Zdá se, že dynamicky vytáhne data. Ale když jsem použít možnost nahlédnout do prohlížeče Chrome, najdu „membersTable“ tabulky v div, že potřebuji.

zadejte

Jak mohu použít BeautifulSoup přístup k těmto membersTable že mohu přístup v inspekci.

Položena 10/10/2019 v 00:49
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Můžete napodobit požadavek POST stránka přispívá k obsahu pak použít hjson zvládnout nekotovaných klíče v řetězci vytáhl odpovědi

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)

zadejte popis obrázku zde

Odpovězeno 10/10/2019 v 08:54
zdroj uživatelem

hlasů
0

Zkus tohle

   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)
Odpovězeno 10/10/2019 v 04:57
zdroj uživatelem

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