【问题标题】:Extract Twitter account description Scraping提取 Twitter 账号描述 抓取
【发布时间】:2020-06-06 17:04:10
【问题描述】:

我想提取描述 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 scrape(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

这就是我在复制 outherHTML 检查器中的结果

<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 提取描述。

【问题讨论】:

  • 您是否考虑过或知道 tweepy,这是 Twitter api 的 python 包装器?这可能就是你想要的。 docs.tweepy.org/en/latest
  • 不知道怎么用,所以没用过,建议采纳
  • 接受的建议和例子

标签: python python-2.7 web-scraping twitter beautifulsoup


【解决方案1】:

我建议使用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 获取凭据。

【讨论】:

  • 这些数据如何获取?
  • @AlbertoBedmarMontaño 您需要注册您的应用程序here
【解决方案2】:

解决方案

    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 scrape(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)

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多