#python-3.x #url
#python-3.x #url
Вопрос:
я использую этот код
import urllib.request
fp = urllib.request.urlopen("https://english-thai-dictionary.com/dictionary/?sa=all")
mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()
print(mystr)
x = 'alt'
for item in mystr.split():
if (x) in item:
print(item.strip())
Я получаю тайское слово из этого кода, но я не знал, как получить английское слово.Спасибо
Комментарии:
1. Может быть, вы хотите использовать этот URL: english-thai-dictionary.com/dictionary/?sa=all;ftlang=тогда ?
2. все еще не могу сделать.
3. Вы имеете в виду, что хотите получить английские слова из html-таблицы со страницы?
4. ДА. Я хочу, чтобы на этой странице были английские и тайские слова.
Ответ №1:
Если вы хотите получить слова из таблицы, вам следует использовать библиотеку синтаксического анализа, такую как BeautifulSoup4. Вот пример, как вы можете проанализировать это (я использую запросы для извлечения и beautifulsoup здесь для анализа данных):
Сначала с помощью инструментов разработки в вашем браузере определите таблицу с содержимым, которое вы хотите проанализировать. Таблица с переводами имеет servicesT
атрибут class, который встречается только один раз во всем документе:
import requests
from bs4 import BeautifulSoup
url = 'https://english-thai-dictionary.com/dictionary/?sa=all;ftlang=then'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
# Get table with translations
table = soup.find('table', {'class':'servicesT'})
После этого вам нужно получить все строки, содержащие переводы тайских слов. Если вы посмотрите исходный файл страницы, вы заметите, что первые несколько <tr
строк являются заголовками, которые содержат только заголовки, поэтому мы опустим их. После этого мы получим все <td>
элементы из строки (в этой таблице всегда есть 3 <td>
элемента) и извлекаем из них слова (в этой таблице слова фактически вложены в и ).
table_rows = table.findAll('tr')
# We will skip first 3 rows beacause those are not
# contain information we need
for tr in table_rows[3:]:
# Finding all <td> elements
row_columns = tr.findAll('td')
if len(row_columns) >= 2:
# Get tag with Thai word
thai_word_tag = row_columns[0].select_one('span > a')
# Get tag with English word
english_word_tag = row_columns[1].find('span')
if thai_word_tag:
thai_word = thai_word_tag.text
if english_word_tag:
english_word = english_word_tag.text
# Printing our fetched words
print((thai_word, english_word))
Конечно, это очень простой пример того, что мне удалось разобрать со страницы, и вы должны сами решить, что вы хотите очистить. Я также заметил, что данные внутри таблицы не всегда имеют переводы, поэтому вы должны иметь это в виду при очистке данных. Вы также можете использовать библиотеку Requests-HTML для анализа данных (она поддерживает разбивку на страницы, которая присутствует в таблице на странице, которую вы хотите очистить).