Извлечь описание аккаунта в Твиттере - PullRequest
1 голос
/ 22 февраля 2020

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

Я печатаю количество подписчиков, но не могу напечатать описание учетной записи.

Код:

    import requests
from bs4 import BeautifulSoup

USER_AGENT = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}

def obtener_resultados(termino_busqueda, numero_resultados, codigo_lenguaje):
    url_google = 'https://www.google.com/search?q={}&num={}&hl={}'.format(termino_busqueda, numero_resultados, codigo_lenguaje)
    respuesta = requests.get(url_google, headers=USER_AGENT)
    respuesta.raise_for_status()
    return termino_busqueda, respuesta.text

def procesar_resultados(html, palabra):
    soup = BeautifulSoup(html, 'html.parser')
    resultados_encontrados = []
    bloque = soup.find_all("div", class_="g")
    for resultado in bloque:
        titulo = resultado.find('h3').string
        resultados_encontrados.append(titulo)
    return resultados_encontrados

def scrap(termino_busqueda, numero_resultados, codigo_lenguaje):
    palabra, html = obtener_resultados(termino_busqueda, numero_resultados, codigo_lenguaje)
    resultados = procesar_resultados(html, palabra)
    return resultados

if __name__ == '__main__':
    palabra = 'Quantika14'
    h5 = (palabra, 1, "es")
h6 = (h5[0])



username=h6
url = 'https://www.twitter.com/'+username
r = requests.get(url)
soup = BeautifulSoup(r.content,'html.parser')



f = soup.find('li', class_="ProfileNav-item--followers")
title = f.find('a')['title']
print (title)

g=soup.find_all('title', limit=1)



h = soup.find('data-testid', {'UserDescription': 'textContent'})



title2 =g
print (title2)
title3=h
print(title3)

Вот что получается, когда Я делаю опцию «Селектор копирования» в инспекторе

#react-root > div > div > div > main > div > div > div > div.css-1dbjc4n.r-14lw9ot.r-1tlfku8.r-1ljd8xs.r-13l2t4g.r-1phboty.r-1jgb5lz.r-11wrixw.r-61z16t.r-1ye8kvj.r-13qz1uu.r-184en5c > div > div:nth-child(2) > div > div > div:nth-child(2) > div > div > div:nth-child(1) > div > div:nth-child(3) > div > span

, и это то, что получается, когда я делаю в инспекторе копирования HTML инспектор

<span class="css-901oao css-16my406 r-1qd0xha r-ad9z0x r-bcqeeo r-qvutc0">Damos soluciones a través de nuestras aplicaciones y peritajes informáticos. Encontramos a los autores de crímenes usando nuevas tecnologías.</span>

С этими данными на на странице Twitter я не могу извлечь описание с помощью BeautifulSoup.

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Я предлагаю использовать twitter api .

Вы можете легко получить описание профиля пользователя с помощью чего-то вроде этого:

import tweepy

auth = tweepy.OAuthHandler(TWITTER_C_KEY, TWITTER_C_SECRET)
auth.set_access_token(TWITTER_A_KEY, TWITTER_A_SECRET)
api = tweepy.API(auth)
user = api.get_user("Quantika14")

print(user.description)
# 'Damos soluciones a través de nuestras aplicaciones y peritajes informáticos. Encontramos a los autores de crímenes usando nuevas tecnologías.'

# it has many useful attributes like `followers_count`, `friends_count`, `statuses_count` etc

Единственное неудобство - получение учетных данных из Twitter.

0 голосов
/ 23 февраля 2020

Раствор

    import requests
from bs4 import BeautifulSoup


USER_AGENT = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}

def obtener_resultados(termino_busqueda, numero_resultados, codigo_lenguaje):
    url_google = 'https://www.google.com/search?q={}&num={}&hl={}'.format(termino_busqueda, numero_resultados, codigo_lenguaje)
    respuesta = requests.get(url_google, headers=USER_AGENT)
    respuesta.raise_for_status()
    return termino_busqueda, respuesta.text

def procesar_resultados(html, palabra):
    soup = BeautifulSoup(html, 'html.parser')
    resultados_encontrados = []
    bloque = soup.find_all("div", class_="g")
    for resultado in bloque:
        titulo = resultado.find('h3').string
        resultados_encontrados.append(titulo)
    return resultados_encontrados

def scrap(termino_busqueda, numero_resultados, codigo_lenguaje):
    palabra, html = obtener_resultados(termino_busqueda, numero_resultados, codigo_lenguaje)
    resultados = procesar_resultados(html, palabra)
    return resultados

if __name__ == '__main__':
    palabra = 'Quantika14'
    h5 = (palabra, 1, "es")
h6 = (h5[0])

username=h6
url = 'https://www.twitter.com/'+username
r = requests.get(url)
soup = BeautifulSoup(r.content,'html.parser')



f = soup.find('li', class_="ProfileNav-item--followers")
title = f.find('a')['title']
print (title)

g=soup.find_all('title', limit=1)
h = soup.select('.bio',limit=1)



title2 =g
print (title2)
title3=h
print(title3)
...