Соскоб Этнос из Википедии - PullRequest
0 голосов
/ 24 апреля 2018

Я заинтересован в соскобе с этнической принадлежности из Википедии для знаменитостей. Моя идея в том, что у меня есть список из 9 миллионов актеров, для которых я хочу выяснить их этническую принадлежность и изучить это.

Этническая принадлежность, которая меня интересует, также предопределена, и мне нужно искать только из того же.

Теперь, я предполагаю, что у меня есть три актера, например -

names = ['Chris Hemsworth', 'Paul Walker', 'Al Pacino']

и этническая принадлежность -

eth = ['American', 'GreaterEuropean', 'British', 'WestEuropean, 'Italian', 'WestEuropean, 'French', 'EastEuropean', 'Jewish', 'Germanic', 'Nordic', 'Asian', 'GreaterEastAsian, 'Japanese', 'GreaterEuropean', 'WestEuropean', 'Hispanic', 'GreaterAfrican, 'Africans', 'Asian', 'EastAsian', 'GreaterAfrican, 'Muslim', 'Asian', 'IndianSubContinent']

Итак, я занимаюсь поиском википедии и читаю все страницы для каждого имени, а затем ищу слово по этнической принадлежности, если оно существует.

import urllib
link = "http://en.wikipedia.org/wiki/"


for name in names:
    search = link+str(name)
    urllib.urlopen(search).read()

Я застрял здесь, я хочу создать выходной кадр данных, например, как ...

Names             Ethnicity
Chris Hemsworth   American
Paul Walker       Germanic
Al Pacino         Asian

1 Ответ

0 голосов
/ 24 апреля 2018

Этот сайт может быть лучшим списком этнических групп актеров:

import requests, re
from bs4 import BeautifulSoup as soup
import pandas as pd
names = ['Chris Hemsworth', 'Paul Walker', 'Al Pacino']
final_results = {}
for name in names:
  r = requests.get('http://ethnicelebs.com/{}'.format('-'.join(name.lower().split()))).text
  try:
    data = re.findall('(?<=Ethnicity: )[a-zA-Z]+', soup(r, 'lxml').find('strong').text)
    final_results[name] = data[0]
  except:
    final_results[name] = 'Ethicity not found'

table = pd.DataFrame([[a, b] for a, b in final_results.items()], columns = ['Name', 'Ethnicity'])

Выход:

              Name Ethnicity
0        Al Pacino   Italian
1  Chris Hemsworth     Dutch
2      Paul Walker   English
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...