how from español ejemplos python html web-scraping beautifulsoup html-parsing

from - how to use beautifulsoup in python



cómo raspar enlaces profundamente embebidos con python beautifulSoup (1)

El problema es que la barra lateral se carga con una solicitud asincrónica adicional.

La idea aquí sería:

  • mantener una sesión de rastreo de web usando requests.Session
  • analizar la URL que se utiliza para obtener la barra lateral
  • sigue ese enlace y obtén los enlaces del div con class="portlet_content"

Código:

from urlparse import urljoin from bs4 import BeautifulSoup import requests base_url = ''http://www.ncbi.nlm.nih.gov'' website = ''http://www.ncbi.nlm.nih.gov/pubmed/?term=mtap+prmt'' # parse the main page and grab the link to the side bar session = requests.Session() soup = BeautifulSoup(session.get(website).content) url = urljoin(base_url, soup.select(''div#disc_col a.disc_col_ph'')[0][''href'']) # parsing the side bar soup = BeautifulSoup(session.get(url).content) for a in soup.select(''div.portlet_content ul li.brieflinkpopper a''): print a.text, urljoin(base_url, a.get(''href''))

Huellas dactilares:

The metabolite 5''-methylthioadenosine signals through the adenosine receptor A2B in melanoma. http://www.ncbi.nlm.nih.gov/pubmed/25087184 Down-regulation of methylthioadenosine phosphorylase (MTAP) induces progression of hepatocellular carcinoma via accumulation of 5''-deoxy-5''-methylthioadenosine (MTA). http://www.ncbi.nlm.nih.gov/pubmed/21356366 Quantitative analysis of 5''-deoxy-5''-methylthioadenosine in melanoma cells by liquid chromatography-stable isotope ratio tandem mass spectrometry. http://www.ncbi.nlm.nih.gov/pubmed/18996776 ... Cited in PMC http://www.ncbi.nlm.nih.gov/pmc/articles/pmid/23265702/citedby/?tool=pubmed

Intento crear una araña / rastreador web con fines académicos para tomar texto de publicaciones académicas y anexar enlaces relacionados a una pila de URL. Estoy tratando de rastrear un sitio web llamado ''PubMed''. Parece que no puedo agarrar los enlaces que necesito. Aquí está mi código con una página de ejemplo, esta página debe ser representativa de los demás en su base de datos:

website = ''http://www.ncbi.nlm.nih.gov/pubmed/?term=mtap+prmt'' from bs4 import BeautifulSoup import requests r = requests.get(website) soup = BeautifulSoup(r.content)

He descompuesto el árbol html en varias variables solo para facilitar la lectura, de modo que pueda caber en un ancho de pantalla.

key_text = soup.find(''div'', {''class'':''grid''}).find(''div'',{''class'':''col twelve_col nomargin shadow''}).find(''form'',{''id'':''EntrezForm''}) side_column = key_text.find(''div'', {''xmlns:xi'':''http://www.w3.org/2001/XInclude''}).find(''div'', {''class'':''supplemental col three_col last''}) side_links = side_column.find(''div'').findAll(''div'')[1].find(''div'', {''id'':''disc_col''}).findAll(''div'')[1] for link in side_links: print link

si nos fijamos en el código fuente html utilizando el elemento chrome inspeccionar debe haber varios otros divs anidados con enlaces dentro de ''side_links''. Sin embargo, el código anterior produce el siguiente error:

Traceback (most recent call last): File "C:/Users/ballbag/Copy/web_scraping/google_search.py", line 22, in <module> side_links = side_column.find(''div'').findAll(''div'')[1].find(''div'', {''id'':''disc_col''}).findAll(''div'')[1] IndexError: list index out of range

si va a la url hay una columna a la derecha llamada ''enlaces relacionados'' que contiene las URL que deseo raspar. Pero parece que no puedo llegar a ellos. Hay una declaración que dice que bajo el div estoy tratando de entrar y sospecho que esto tiene algo que ver con eso. ¿Alguien puede ayudar a tomar estos enlaces? Realmente apreciaría cualquier puntero