Извините за запутанный заголовок.Я начинающий в Python и даже не знаю, на каком языке задать этот вопрос.
Я пытаюсь провести некоторую очистку данных на сайте Box Office Mojo.Я пытаюсь создать CSV-файл, который выбирает таблицу для каждого кассового хита каждой страны за каждый год (см. https://www.boxofficemojo.com/intl/austria/yearly/?yr=2019&p=.htm
. Мне удалось использовать BeautifulSoup, чтобы захватить определенную страницу и проанализировать ее:
pip install bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
##Creating a variable for the URL I want to use
my_url = 'https://www.boxofficemojo.com/intl/austria/yearly/?yr=2019&p=.htm'
uReq(my_url)
### Opening up connecting, grabbing the page, closing the connection
uClient = uReq(my_url)
page_html = uClient.read() ###Don't run page_html because it may crash the client
uClient.close()
##Using BeuatifulSoup to read the html page and parsing it
page_soup = soup(page_html,"html.parser")
Мне удалось выделить конкретную строку html, из которой я хочу получить информацию:
container_odd = page_soup.findAll("tr", {"bgcolor":"#ffffff"})
container_even = page_soup.findAll("tr", {"bgcolor":"#f4f4ff"})
Я вижу, что она захватила нужный мне тексти могу получить его без всякого html-форматирования.
>>>>container_even[0]
<tr bgcolor="#f4f4ff"><td align="center"><font size="2">2</font></td>
<td><font size="2">How to Train Your Dragon: The Hidden World</font></td>
<td><font size="2">UPI</font></td>
<td align="right"><font size="2"><b>$2,701,010</b></font></td>
<td align="center"><font size="2">2/8</font></td>
</tr>
>>> container_odd[0].text
'1\nCaptain Marvel\nDisney\n$3,221,398\n3/7\n'
Я также могу вызвать первый «элемент td» (я не знаю, как это назвать) в строке:
>>> container_odd[0].td.text
'1'
Я не могу на всю жизнь понять, как вытащить этот второй «тд-элемент» в строке, т. Е. «Капитан Марвел».
Теперь я хочу создатьцикл, который будет извлекать каждый отдельный элемент td из каждой строки в container_even / odd для помещения в список.
Итак, я хочу, чтобы rank_list содержал «1, 2, 3, 4 ...» (или, скорее,«1,3,5 ...» и «2,4,6 ...» из-за кода в данном случае)
и списка заголовков, содержащего «Captain Marvel, H»а теперь дрессировать своего дракона ... '
Чего я не могу понять, так это как вытащить этот второй «тд предмет», а затем как перебрать этот предмет в каждом ряду?
Я пытался получить хотя бы список элементов ранга:
rank = td[]
print("rank: " + rank)
Но только что получил синтаксическую ошибку
File "scraper.py", line 25
rank = td[]
^
SyntaxError: invalid syntax
Любая помощь в создании цикла или, по крайней мере, выяснение, какчтобы вытащить этот второй элемент ТД будет очень признателен!