[Python, Data Mining, API, Big Data] Как лайкать четыре тысячи девушек в час
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
ЗачемУ каждого молодого DS в какой то момент времени возникает проблема - очень хочется тяночку, всмысле спарсить тиндер и сделать тематическое моделирование на описаниях профиля.КакОтвет короткий - легко, вот ссылка на collabДлинный ответ - тиндер обменивается открытым json с https://api.gotinder.com, а в XHR лежит наш x auth key. Остальное - дело техники и библиотеки Response.
ПарсингКод для профиля
import datetime
from geopy.geocoders import Nominatim
AuthKey = ''
# Ключ пихуем сюда
TINDER_URL = "https://api.gotinder.com"
geolocator = Nominatim(user_agent="auto-tinder")
PROF_FILE = "./images/unclassified/profiles.txt"
class Person(object):
def __init__(self, data, api):
self._api = api
self.id = data["_id"]
self.name = data.get("name", "Unknown")
self.bio = data.get("bio", "")
self.birth_date = datetime.datetime.strptime(data["birth_date"], '%Y-%m-%dT%H:%M:%S.%fZ') if data.get(
"birth_date", False) else None
self.gender = ["Male", "Female", "Unknown"][data.get("gender", 2)]
self.images = list(map(lambda photo: photo["url"], data.get("photos", [])))
self.jobs = list(
map(lambda job: {"title": job.get("title", {}).get("name"), "company": job.get("company", {}).get("name")}, data.get("jobs", [])))
self.schools = list(map(lambda school: school["name"], data.get("schools", [])))
if data.get("pos", False):
self.location = geolocator.reverse(f'{data["pos"]["lat"]}, {data["pos"]["lon"]}')
def __repr__(self):
return f"{self.id} - {self.name} ({self.birth_date.strftime('%d.%m.%Y')})"
def like(self):
return self._api.like(self.id)
def dislike(self):
return self._api.dislike(self.id)
Ничего интересного тут нет, просто ходим по html и тянем то что нужноРабота с API
import requests
TINDER_URL = "https://api.gotinder.com"
class tinderAPI():
def __init__(self, token):
self._token = token
def profile(self):
data = requests.get(TINDER_URL + "/v2/profile?include=account%2Cuser", headers={"X-Auth-Token": self._token}).json()
return Profile(data["data"], self)
def matches(self, limit=10):
data = requests.get(TINDER_URL + f"/v2/matches?count={limit}", headers={"X-Auth-Token": self._token}).json()
return list(map(lambda match: Person(match["person"], self), data["data"]["matches"]))
def like(self, user_id):
data = requests.get(TINDER_URL + f"/like/{user_id}", headers={"X-Auth-Token": self._token}).json()
return {
"is_match": data["match"],
"liked_remaining": data["likes_remaining"]
}
def dislike(self, user_id):
requests.get(TINDER_URL + f"/pass/{user_id}", headers={"X-Auth-Token": self._token}).json()
return True
def nearby_persons(self):
data = requests.get(TINDER_URL + "/v2/recs/core", headers={"X-Auth-Token": self._token}).json()
return list(map(lambda user: Person(user["user"], self), data["data"]["results"]))
Тут мы получаем json, разбираем его и тащим все что нам нужно(список юзеров)Кладем все в .csv
import time
import pandas as pd
df = pd.DataFrame()
prf = []
prsn= []
vuz = []
gender = []
job = []
if __name__ == "__main__":
token = AuthKey
api = tinderAPI(token)
while True:
persons = api.nearby_persons()
for person in persons:
#тут нет логики, напишите сами если захотит
print(person)
time.sleep(1)
person.dislike()
prf+=[person.bio]
prsn+=[person]
vuz+=[person.schools]
job+=[person.jobs]
gender+=[person.gender]
print(person.bio)
df['vuz'] = vuz
df['jobs'] = job
df['person'] = prsn
df['bio'] = prf
df['gender'] = gender
df.to_csv('tinder.csv')
Два часа спустя получаем все что хотели!!
Спасибо за прочтение, скоро будет вторая часть про тематическое моделирование с помощью BERTБольшое спасибо я хочу сказать своим подписчикам в телеграмме Так же в моем телеграмме есть много ноутбуков и статей про DS и не очень. Например рендер 3д моделей на https://colab.research.google.com/ А в рубрике #чтивонаночь я рассказываю про самое интересное, что я нашел за последние время.Код
===========
Источник:
habr.com
===========
Похожие новости:
- [Управление разработкой, Управление персоналом, Карьера в IT-индустрии, IT-компании] Почему лучше работать в B2B-проектах: неожиданные факты о разработке в B2B и B2C
- [Python, Data Mining, API] Как лайкать 4000 тысячи девушек в час
- [Компьютерное железо, История IT, Старое железо] DataArt открыл сайт IT-музея
- [Мессенджеры, Python, CRM-системы] Телеграм бот для поддержки своими руками
- [Информационная безопасность, Реверс-инжиниринг, Исследования и прогнозы в IT, IT-компании] Старый конь борозды не испортит: как стилер Pony крадет данные и где их потом искать
- [IT-инфраструктура, Виртуализация, Microsoft SQL Server, Администрирование баз данных] Как мы разгоняли кластер для нагруженных баз Microsoft SQL и получали заветные 200 000 IOPS
- [Информационная безопасность, Big Data] Безопасность hdfs hive hbase используя knox и ranger (перевод)
- [Open source, Java, API, Apache, Natural Language Processing] Поиск по синонимам — контролируем процесс или доверяемся нейросетям
- [Программирование, Java, API, Хакатоны] Тривиальная и неправильная «облачная» компиляция
- [Python] Строгая десериализация YAML в Python c библиотекой marshmallow (перевод)
Теги для поиска: #_python, #_data_mining, #_api, #_big_data, #_python, #_data, #_datamining, #_tinder, #_python, #_data_mining, #_api, #_big_data
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:33
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
ЗачемУ каждого молодого DS в какой то момент времени возникает проблема - очень хочется тяночку, всмысле спарсить тиндер и сделать тематическое моделирование на описаниях профиля.КакОтвет короткий - легко, вот ссылка на collabДлинный ответ - тиндер обменивается открытым json с https://api.gotinder.com, а в XHR лежит наш x auth key. Остальное - дело техники и библиотеки Response. ПарсингКод для профиля import datetime
from geopy.geocoders import Nominatim AuthKey = '' # Ключ пихуем сюда TINDER_URL = "https://api.gotinder.com" geolocator = Nominatim(user_agent="auto-tinder") PROF_FILE = "./images/unclassified/profiles.txt" class Person(object): def __init__(self, data, api): self._api = api self.id = data["_id"] self.name = data.get("name", "Unknown") self.bio = data.get("bio", "") self.birth_date = datetime.datetime.strptime(data["birth_date"], '%Y-%m-%dT%H:%M:%S.%fZ') if data.get( "birth_date", False) else None self.gender = ["Male", "Female", "Unknown"][data.get("gender", 2)] self.images = list(map(lambda photo: photo["url"], data.get("photos", []))) self.jobs = list( map(lambda job: {"title": job.get("title", {}).get("name"), "company": job.get("company", {}).get("name")}, data.get("jobs", []))) self.schools = list(map(lambda school: school["name"], data.get("schools", []))) if data.get("pos", False): self.location = geolocator.reverse(f'{data["pos"]["lat"]}, {data["pos"]["lon"]}') def __repr__(self): return f"{self.id} - {self.name} ({self.birth_date.strftime('%d.%m.%Y')})" def like(self): return self._api.like(self.id) def dislike(self): return self._api.dislike(self.id) import requests
TINDER_URL = "https://api.gotinder.com" class tinderAPI(): def __init__(self, token): self._token = token def profile(self): data = requests.get(TINDER_URL + "/v2/profile?include=account%2Cuser", headers={"X-Auth-Token": self._token}).json() return Profile(data["data"], self) def matches(self, limit=10): data = requests.get(TINDER_URL + f"/v2/matches?count={limit}", headers={"X-Auth-Token": self._token}).json() return list(map(lambda match: Person(match["person"], self), data["data"]["matches"])) def like(self, user_id): data = requests.get(TINDER_URL + f"/like/{user_id}", headers={"X-Auth-Token": self._token}).json() return { "is_match": data["match"], "liked_remaining": data["likes_remaining"] } def dislike(self, user_id): requests.get(TINDER_URL + f"/pass/{user_id}", headers={"X-Auth-Token": self._token}).json() return True def nearby_persons(self): data = requests.get(TINDER_URL + "/v2/recs/core", headers={"X-Auth-Token": self._token}).json() return list(map(lambda user: Person(user["user"], self), data["data"]["results"])) import time
import pandas as pd df = pd.DataFrame() prf = [] prsn= [] vuz = [] gender = [] job = [] if __name__ == "__main__": token = AuthKey api = tinderAPI(token) while True: persons = api.nearby_persons() for person in persons: #тут нет логики, напишите сами если захотит print(person) time.sleep(1) person.dislike() prf+=[person.bio] prsn+=[person] vuz+=[person.schools] job+=[person.jobs] gender+=[person.gender] print(person.bio) df['vuz'] = vuz df['jobs'] = job df['person'] = prsn df['bio'] = prf df['gender'] = gender df.to_csv('tinder.csv') Спасибо за прочтение, скоро будет вторая часть про тематическое моделирование с помощью BERTБольшое спасибо я хочу сказать своим подписчикам в телеграмме Так же в моем телеграмме есть много ноутбуков и статей про DS и не очень. Например рендер 3д моделей на https://colab.research.google.com/ А в рубрике #чтивонаночь я рассказываю про самое интересное, что я нашел за последние время.Код =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:33
Часовой пояс: UTC + 5