Python webscraping не может использовать элементы span - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь проанализировать данные по следующей ссылке https://www.sec.gov/Archives/edgar/data/1652707/000165270718000002/xslFormDX01/primary_doc.xml

Я хочу найти отраслевую группу на основе флажка, но не смог получить доступ к элементу span из следующего кода

<td><table border="0" summary="Table with single CheckBox"><tr>
<td class="CheckBox"><span class="FormData">X</span></td>
<td align="left" class="FormText">Other Health Care</td>
</tr></table></td>

Вот то, что я пробовал

import csv
from datetime import datetime
from bs4 import BeautifulSoup
from selenium import webdriver

chromedriver = '/usr/local/bin/chromedriver'
browser = webdriver.Chrome(chromedriver)
#specifying the url of the page
browser.get('https://www.sec.gov/Archives/edgar/data/1753852/000175385218000001/xslFormDX01/primary_doc.xml')
#specifying the url of the page
html = browser.page_source
soup = BeautifulSoup(html, 'lxml')
table = soup.find('table',{'summary':'Issuer Identity Information'})
td = table.find_all('td',{'class':'FormData'})
industry = soup.find('table',{'summary':'Industry Group'})
industrylist = industry.find_all('table',{'summary':'Table with single CheckBox'})
spanelement = industrylist[10]
print(spanelement)

И в результате нет элемента span внутри него, к которому я хотел получить доступ, чтобы найти отрасль

<table border="0" summary="Table with single CheckBox"><tbody><tr>
<td class="CheckBox">  </td>
<td align="left" class="FormText">Other Health Care</td>
</tr></tbody></table>

IЯ новичок в поиске в Интернете, может кто-нибудь, пожалуйста, помогите!

1 Ответ

0 голосов
/ 22 октября 2018

Не идеально, но очень близко.Попробуйте следующий скрипт:

import requests
from bs4 import BeautifulSoup

link = "https://www.sec.gov/Archives/edgar/data/1753852/000175385218000001/xslFormDX01/primary_doc.xml"

res = requests.get(link)
soup = BeautifulSoup(res.text,"lxml")
for items in soup.select("table[summary='Industry Group'] .CheckBox"):
    if "X" in items.text:
        industry = items.find_parent().select_one(".FormText").text
        print(industry)

Вывод:

Pooled Investment Fund
Other Investment Fund
Yes
...