Ошибка во время al oop для извлечения содержимого из очищенной ссылки с помощью BeautifulSoup - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над этим парсером некоторое время и пытаюсь получить основное содержание различных ссылок онлайн-бюллетеня. Поэтому, если я разобью код для второго l oop и запустил его отдельно, он вернет правильные результаты, однако, если та же часть будет помещена внутри al oop в большем скрипте, он вернет ошибку «IndexError: индекс списка вне допустимого диапазона».

Это сценарий, который второй l oop возвращает ошибку ( UPDATED ):

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import pandas as pd

def pages(myurl):
  # opening up connection, grabbing the page
  uClient = uReq(myurl)
  page_html = uClient.read()
  uClient.close()

  # html parsing
  page_soup = soup(page_html, "html.parser")


  dt = []
  ttl = []
  name = []
  body = []
  source = []

  # grabs each newsletter subjects
  titular = page_soup.findAll("div",{"class":"col-md-9 col-sm-9 col-xs-9"})
  titular[0]

  tit1 = titular[0]
  fixed = 'https://www.df.cl/noticias/site/tax/port/all'

  for tit1 in titular:

    date = tit1.span.text
    dt.append(date)

    title = tit1.h2.a.text
    ttl.append(title)

    link = tit1.h2.a["href"].strip()
    source.append(fixed + link)

  df = pd.DataFrame(dt, columns =['date'])
  df['title'] = ttl
  df['link'] = source

  for link in df['link']:
    
    new_link = fixed + link
    page = uReq(new_link)
    page_html_1 = page.read()
    page.close()
    
    page_soup = soup(page_html_1, "html.parser")

    content = page_soup.findAll("div",{"class":"entry cuerpo-noticias CUERPO"})
    content[0].text
    cont1 = content[0].text
    body.append(cont1)

  df['content'] = body

  print(df)

  #df.to_csv(u'C:/Users/snpw9/Desktop/Scripts/sample_scrap.csv', mode='a', header=False, index=False)
   
pages('https://www.df.cl/noticias/site/tax/port/all/taxport_3_230__1.html') #Banca y Fintech
pages('https://www.df.cl/noticias/site/tax/port/all/taxport_3_20__1.html') #Bolsa y Monedas
pages('https://www.df.cl/noticias/site/tax/port/all/taxport_3_226__1.html') #Pensiones
pages('https://www.df.cl/noticias/site/tax/port/all/taxport_3_228__1.html') #Seguros

Было бы очень полезно заставить эту часть работать, надеюсь, с вашей помощью!

Второй скрипт без l oop (который работает правильно):

  from urllib.request import urlopen as uReq
  from bs4 import BeautifulSoup as soup

  myurl = 'https://www.df.cl/noticias/site/tax/port/all/noticias/mercados/banca-fintech/bancoestado- 
  destina-90-millones-para-los-gastos-de-internet-de-sus/2020-07-07/152240.html'

  #def pages(myurl):
  # opening up connection, grabbing the page
  uClient = uReq(myurl)
  page_html = uClient.read()
  uClient.close()

  #html parsing
  page_soup = soup(page_html, "html.parser")

  #grabs each newsletter subjects
  content = page_soup.findAll("div",{"class":"entry cuerpo-noticias CUERPO"})
  cont1 = content[0].text
  print(cont1)


   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...