Как я могу заменить пустые теги в BeautifulSoup строкой? - PullRequest
1 голос
/ 21 сентября 2019

Я написал этот код, чтобы очистить некоторые результаты с веб-сайта.Однако после удаления некоторые теги оказались пустыми в моем файле CSV.Как добавить условие для замены пустых тегов на строку, содержащую сообщение?

Это фрагмент того, как выглядит мой последний CSV-файл:

per | eng

озеро | 254

группа |

raeson | 541

новости | 5412

отметки | 225

нация |

case | 474 .....

Я хочу добавить некоторое условие в мой цикл, чтобы, если какой-либо объект (per или eng) натолкнулся на пустой тег, то условие заменит их наСтрока с надписью «нет числа», которая делает мой конечный результат похожим на это:

per | eng

lake | 254

band | no number

raeson| 541

новости | 5412

оценки | 225

нация | без номера

кейс | 474 .....

Я провел поиск и обнаружил, что должен добавить условие в свой цикл, например:

if per or eng == None:
  replace.(per and eng).replace("no number")
   else

    ........


records = []
for pg in range(1, 25 + 1):
    r = requests.get('url'+str(pg))
    soup = BeautifulSoup(r.text, 'html.parser')
    results = soup.find_all('a', attrs={'itemprop':'url'})
    for result in results:
        per = result.find('strong').text.strip()
        eng = result.find('span').text.strip()

        records.append((per, eng))
        #sleep(randint(1, 4))

df = pd.DataFrame(records, columns=['per', 'eng'])
df.to_csv('finaledata.csv', index=False, encoding='utf-8', sep='|')

1 Ответ

0 голосов
/ 21 сентября 2019

Вместо того, чтобы заменить что-либо в DOM, измените его непосредственно перед сохранением в файле, см. Ниже код

records = []
for pg in range(1, 25 + 1):
    r = requests.get('url'+str(pg))
    soup = BeautifulSoup(r.text, 'html.parser')
    results = soup.find_all('a', attrs={'itemprop':'url'})
    for result in results:
        per = result.find('strong').text.strip()
        if per=="":
            per="no number"
        eng = result.find('span').text.strip()
        if eng=="":
            eng="no number"

        records.append((per, eng))
        #sleep(randint(1, 4))

df = pd.DataFrame(records, columns=['per', 'eng'])
df.to_csv('finaledata.csv', index=False, encoding='utf-8', sep='|')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...