Итерируйте через HTML с помощью BeautifulSoup, чтобы найти совпадение тега и строки - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь извлечь данные таблицы с веб-сайта, но прежде чем я это сделаю, мне нужно найти точную таблицу, которую я ищу, поэтому я пытаюсь выполнить эту работу, следуя приведенному здесь примеру ( Итерация html через классы тегов с BeautifulSoup ) и документацию здесь (https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find -all ). Тем не менее, я не могу понять, почему приведенный ниже код не работает

import requests
from bs4 import BeautifulSoup,NavigableString, Tag
import pandas as pd
import re
URL = 'https://aoprals.state.gov/Web920/search_action.asp?PostCode=10323&MenuHide=1&COLABox=1&EducationBox=1&HardshipBox=1&DangerPayBox=1&LQABox=1&PerDiemBox=1&EffectiveDate=20200802'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
for header in soup.find_all("h4",text=re.compile('Post \(Cost of Living\) Allowance')):
    nextNode = header
    print(header)
    while True:
        nextNode = nextNode.nextSibling
        
        if nextNode is None:
            break
        if isinstance(nextNode, Tag):
            if nextNode.name == "h4":
                print(nextNode)
                break

Если я поменяю местами ниже, он найдет текст, но мне нужно, чтобы он нашел тег с текстом, чтобы я мог затем позже перейдите к таблице, которая идет после него.

for header in soup.find_all(text=re.compile('Post \(Cost of Living\) Allowance')):

Что мне не хватает, что мешает ему работать, как в примере и в документации?

...