#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. УХ ты! Скромная просьба с моей стороны. Не могли бы вы, пожалуйста, проголосовать за мой ответ и принять его как лучший ответ?