2016-07-02 3 views
3

Я пытаюсь очистить http://emojipedia.org/emoji/, но я не уверен, что это самый эффективный способ сделать это. То, что я хотел бы очистить, находится внутри таблицы class = "emoji_list". Я хотел бы сохранить материал внутри каждого «td» в отдельных столбцах. Вывод будет иметь следующую, где каждую строку представляет смайлик:Очистить класс таблицы в Python

Col1_Link    Col2_emoji  Col3_Comment  Col4_UTF 
"/emoji/%F0%9F%98%80/"    Grinning Face   U+1F600 

Я написал следующий код до сих пор, но я не уверен, что это лучший способ сделать это.

import requests 
from bs4 import BeautifulSoup 
import urllib 
import re  

url = "http://emojipedia.org/emoji/" 
html = urllib.urlopen(url) 
soup = BeautifulSoup(html) 
soup.findAll('tr', limit=2) 

Большое спасибо за вашу помощь.

ответ

3

soup.findAll('tr', limit=2) не будет делать много, учитывая, что только первые два trs на странице. Вы должны сначала найти все строки в таблицы затем извлечь то, что вы хотите, который находится внутри двух с.в. в каждом тр:

import requests 
from bs4 import BeautifulSoup 
url = "http://emojipedia.org/emoji/" 
html = requests.get(url).content 

soup = BeautifulSoup(html) 
table = soup.select_one("table.emoji-list") 

for row in table.find_all("tr")[:5]: 
    td1, td2 = row.find_all("td") 
    em, desc = td1.text.split(None, 1) 
    print(td1.a["href"], em, desc, td2.text) 

Другим способом было бы получить только текст без расщепления будет чтобы получить текст из тега за исключением текста ребенка с find(text=True, recursive=False)

for row in table.find_all("tr"): 
    td1, td2 = row.find_all("td") 
    print(td1.a["href"], td1.a.span.text, td1.a.find(text=True, recursive=False), td2.text) 

Кроме того, я бы придерживаться с помощью запросов по URLLIB.

+0

Большое спасибо! «Table = soup.select_one (« table.emoji-list »)« не работает для меня, но я использовал «table = soup.find (« table », {'class': 'emoji-list'}) " – morfara

+0

@morfara, интересно, вы использовали запросы, чтобы получить источник? –

+0

Я новичок в соскабливании, и я должен признать, что это настолько запутывает, какие библиотеки лучше всего использовать. Знаете ли вы какие-либо хорошие ресурсы, которые объясняют, почему запросы лучше по urllib? P.s. 1 Да, я использовал его, но он дает мне «TypeError: объект« NoneType »не может быть вызван» P.s. 2 Для td1.text я получаю «u» \ U0001f600 Grinning Face »в качестве вывода. Есть ли простой способ сохранить только английский язык и удалить юникод? Еще раз спасибо! – morfara

Смежные вопросы