попытка очистки страницы, но отсутствует

#python #web-scraping #beautifulsoup

#python #веб-очистка #beautifulsoup

Вопрос:

 index_cd = 'KPI200'
page_n = 1
naver_index = 'http://finance.naver.com/sise/sise_index_day.nhn?code'   index_cd   'amp;page='   str(page_n)

from urllib.request import urlopen
source = urlopen(naver_index).read()
import bs4
source = bs4.BeautifulSoup(source, 'lxml')
td = source.find_all('td')
len(td)
# /html/body/div/table[1]/tbody/tr[3]/td[1]  # this is XPath
source.find_all('table')[0].find_all('tr')[2].find_all('td')[0]
  

Я думал, что результат будет таким: <td class="date">2020.09.29</td>

Но в результате получается, что этот: <td class="date"> </td>

Существует 'xa0' между <td class="date" и </td> .

Мне нужно извлечь эту дату. Как решить эту ситуацию?

Ответ №1:

Проблема в url том, что вы предоставили. Вы пропустили = after code .

Измените naver_index = 'http://finance.naver.com/sise/sise_index_day.nhn?code' index_cd 'amp;page=' str(page_n) на naver_index = 'http://finance.naver.com/sise/sise_index_day.nhn?code=' index_cd 'amp;page=' str(page_n)

Это рабочий код:

 index_cd = 'KPI200'
page_n = 1
naver_index = 'http://finance.naver.com/sise/sise_index_day.nhn?code='   index_cd   'amp;page='   str(page_n)

from urllib.request import urlopen
source = urlopen(naver_index).read()
import bs4
source = bs4.BeautifulSoup(source, 'lxml')
td = source.find_all('td')
len(td)
# /html/body/div/table[1]/tbody/tr[3]/td[1]  # this is XPath
print(source.find_all('table')[0].find_all('tr')[2].find_all('td')[0])
  

Вывод:

 <td class="date">2020.09.29</td>
  

Если вы хотите, чтобы отображалась только дата, измените последнюю строку на:

 print(source.find_all('table')[0].find_all('tr')[2].find_all('td')[0].text)
  

Вывод:

 2020.09.29
  

Надеюсь, что это поможет вам!

Комментарии:

1. О, я пропустил это! Спасибо!

2. УХ ты! Скромная просьба с моей стороны. Не могли бы вы, пожалуйста, проголосовать за мой ответ и принять его как лучший ответ?