python-3.x - notas - insertar imagenes en r markdown
¿Cómo puedo obtener el contenido del cuadro de "comentarios" de las búsquedas de Google? (2)
La pregunta es buena idea
El programa se puede iniciar con python3 defineterm.py apple
#! /usr/bin/env python3.5
# defineterm.py
import requests
from bs4 import BeautifulSoup
import sys
import html
import codecs
searchterm = '' ''.join(sys.argv[1:])
url = ''https://www.google.com/search?q=define+'' + searchterm
res = requests.get(url)
try:
res.raise_for_status()
except Exception as exc:
print(''error while loading page occured: '' + str(exc))
text = html.unescape(res.text)
soup = BeautifulSoup(text, ''lxml'')
prettytext = soup.prettify()
#next lines are for analysis (saving raw page), you can comment them
frawpage = codecs.open(''rawpage.txt'', ''w'', ''utf-8'')
frawpage.write(prettytext)
frawpage.close()
firsttag = soup.find(''h3'', class_="r")
if firsttag != None:
print(firsttag.getText())
print()
#second tag may be changed, so check it if not returns correct result. That might be situation for all searched tags.
secondtag = soup.find(''div'', {''style'': ''color:#666;padding:5px 0''})
if secondtag != None:
print(secondtag.getText())
print()
termtags = soup.findAll("li", {"style" : "list-style-type:decimal"})
count = 0
for tag in termtags:
count += 1
print( str(count)+''. '' + tag.getText())
print()
hacer script como ejecutable
luego en ~ / .bashrc
esta línea se puede agregar
alias defterm="/data/Scrape/google/defineterm.py "
poniendo el camino correcto para guiar tu lugar
luego ejecutando
source ~/.bashrc
El programa se puede iniciar con:
defterm apple (or other term)
Cuando hace una pregunta o solicita la definición de una palabra en una búsqueda de Google, Google le da un resumen de la respuesta en el cuadro de "comentarios" .
Por ejemplo, cuando buscas define apple
obtienes este resultado:
Ahora, me gustaría dejar en claro que no necesito toda la página u otros resultados, solo necesito esta casilla:
¿Cómo puedo usar los módulos Requests
y Beautiful Soup
para obtener el contenido de este cuadro de "comentarios" en Python 3?
Si eso no es posible, ¿puedo usar la API de búsqueda de Google para obtener el contenido del cuadro de "comentarios" ?
He encontrado una pregunta similar sobre SO, pero el OP no ha especificado el idioma, no hay respuestas y me temo que los dos comentarios están desactualizados ya que esta pregunta se hizo hace casi 9 meses.
Gracias por su tiempo y ayuda con anticipación.
Se realiza fácilmente mediante solicitudes y bs4 , solo necesita extraer el texto del div con la clase lr_dct_ent
import requests
from bs4 import BeautifulSoup
h = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"}
r = requests.get("https://www.google.ie/search?q=define+apple", headers=h).text
soup = BeautifulSoup(r)
print("/n".join(soup.select_one("div.lr_dct_ent").text.split(";")))
El texto principal está en una lista ordenada, el sustantivo está en el div con la clase lr_dct_sf_h :
In [11]: r = requests.get("https://www.google.ie/search?q=define+apple", headers=h).text
In [12]: soup = BeautifulSoup(r,"lxml")
In [13]: div = soup.select_one("div.lr_dct_ent")
In [14]: n_v = div.select_one("div.lr_dct_sf_h").text
In [15]: expl = [li.text for li in div.select("ol.lr_dct_sf_sens li")]
In [16]: print(n_v)
noun
In [17]: print("/n".join(expl))
1. the round fruit of a tree of the rose family, which typically has thin green or red skin and crisp flesh.used in names of unrelated fruits or other plant growths that resemble apples in some way, e.g. custard apple, oak apple.
used in names of unrelated fruits or other plant growths that resemble apples in some way, e.g. custard apple, oak apple.
2. the tree bearing apples, with hard pale timber that is used in carpentry and to smoke food.