我正试图抓http://emojipedia.org/emoji/,但我不确定最有效的方法是什么。在table class =“emoji_list”中找到了我想要抓取的内容。我想将每个“td”中的内容保存在单独的列中。输出将如下所示,其中每一行代表一个表情符号:
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)
非常感谢您的帮助。
答案 0 :(得分:3)
soup.findAll('tr', limit=2)
在考虑到只获取页面上的前两个trs时,不会做太多。您需要首先找到表的所有行,然后在每个 tr 中提取您想要的两个 tds :
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上的请求。