В моем предыдущем вопросе ( Как ускорить разбор с помощью BeautifulSoup? ) я спросил, как быстрее сканировать HTML веб-сайт, и ответ мне очень помог.
Но я столкнулся с другой проблемой. Речь идет о сканировании цены билетов.
Я получил JSON текст на веб-странице со ссылкой на ответ на мой предыдущий вопрос. Я мог получить почти любую информацию о фестивалях в JSON, например, название, дату, местоположение, URL изображения плаката и исполнителей.
Но информации о ценах не было, поэтому я попытался узнать цену в другой части веб-сайта.
Когда я включил режим разработчика Google Chrome, есть таблица с ценами (она включает корейский язык, но вам не нужно это понимать):
<table cellpadding="0" cellspacing="0">
<colgroup>
<col>
<col style="width:20px;">
<col>
</colgroup>
<tbody id="divSalesPrice">
<tr>
<td>2일권(입장권)</td>
<td> </td>
<td class="costTd">
<span>140,000 원</span>
</td>
</tr>
<tr>
<td>1일권(입장권)</td>
<td> </td>
<td class="costTd">
<span>88,000 원</span>
</td>
</tr>
</tbody>
</table>
Числа в теге span (140000, 80000) - это цены, которые я хочу извлечь. Поэтому я подумал, что использование Soup будет эффективным:
from bs4 import BeautifulSoup
import requests
def Soup(content):
soup = BeautifulSoup(content, 'lxml')
return soup
def DetailLink(url):
req = requests.get(url)
soup = Soup(req.content)
spans = soup.findAll('span', class_='fw_bold')
links = [f'{url[:27]}{span.a["href"]}' for span in spans]
return links
def Price():
links = DetailLink('http://ticket.interpark.com/TPGoodsList.asp?Ca=Liv&SubCa=Fes')
with requests.Session() as request:
for link in links:
req = request.get(link)
soup = Soup(req.content)
price = soup.find('tbody', id='divSalesPrice')
print(price)
Price()
Однако результат был разочаровывающим ...
<tbody id="divSalesPrice">
<!-- 등록된 기본가 가져오기 오류-->
<tr>
<td colspan="3" id="liBasicPrice">
<ul>
</ul>
</td>
</tr>
</tbody>
Комментарий '등록 된 기본가 가져 오기 오류' означает 'Ошибка произошло при получении цены. '
Означает ли это, что оператор веб-сайта заблокировал другим пользователям доступ к информации о цене на странице?