Jump to content

Erro TypeError: 'type' object is not subscriptable


Krebinha
 Compartilhar

Postagens Recomendadas

Boa tarde galera, sou iniciante em python e vi um script muito bom de web scrapping desse jovem aqui, baseado nisso pedi para ele fazer o mesmo conceito com site geralinks que o conteúdo muda toda hora.

Ele fez pra eu pegar depois ele apagou, mais fiz um fork no meu github.

Esse e o script: https://github.com/krebinha/gera/blob/main/geralinks/generate.py

E está dando esse erro na hora de gerar o xml

Esse erro: Traceback (most recent call last):

  File "script.py", line 7, in <module>

    def get_links() -> list[str]:

TypeError: 'type' object is not subscriptable

 

Alguém pode me ajudar?

  • Curtir 1
Link to comment
Compartilhe em outros sites

Esse e o erro quando eu deixei um cronjob rodando no githubhttps://github.com/krebinha/gera/runs/7030837566?check_suite_focus=true

 

Run python ./geralinks/generate.py

Traceback (most recent call last):

  File "/home/runner/work/gera/gera/./geralinks/generate.py", line 41, in <module>

    posts = sorted([

  File "/home/runner/work/gera/gera/./geralinks/generate.py", line 43, in <listcomp>

    title, get_actual_link(link), img,

  File "/home/runner/work/gera/gera/./geralinks/generate.py", line 19, in get_actual_link

    url = soup.select_one("""link[rel="dns-prefetch"][href]""")["href"]

TypeError: 'NoneType' object is not subscriptable

Error: Process completed with exit code 1

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Olá @Krebinha tudo bem?  obrigado pela paciência 😅

Vou tentar lhe ajudar, ao olhar este código, não entendi muito sobre este get_links() -> list[str]:  este -> nunca visualizei em outros códigos, removi estes -> e o código funcionou normalmente aqui, ficando da seguinte forma.

from bs4 import BeautifulSoup
from datetime import datetime
import requests
import codecs

def get_links():
    site = "https://geralinks.com.br"
    soup = BeautifulSoup(requests.get(site).text, "html.parser")

    return list(set([
        (x.parent["title"], x.parent["href"], x["src"].split("src=")[-1])
        for x in soup.select("""a[href*="/link/"][title] > img""")
    ]))

def get_actual_link(link: str):
    soup = BeautifulSoup(requests.get(link).text, "html.parser")
    url = soup.select_one("""link[rel="dns-prefetch"][href]""")["href"]
    return url

def generate_rss_from_posts(posts: list):
    rss = '<?xml version="1.0" encoding="UTF-8" ?>\n'
    rss += '<rss version="2.0">\n'
    rss += '<channel>\n'
    rss += '\t<title>Geralinks Blog Posts - RSS Feed</title>\n'
    rss += '\t<link>https://github.com/ArjixWasTaken/random-rss-stuff-i-guess</link>\n'
    rss += '\t<description>A simple RSS feed for geralinks!</description>\n\n'  # noqa
    for (title, link, image, date) in posts:
        rss += "\t<item>"
        rss += "\t\t<title>" + title + "</title>"
        rss += "\t\t<link>" + link + "</link>"
        rss += "\t\t<description>" + f'&lt;img src="{image}"&gt;' + "</description>\n"  # noqa
        rss += "\t</item>"

    rss += '\n</channel>\n</rss>'
    return rss

posts = sorted([
        (
            title, get_actual_link(link), img,
            datetime.fromisoformat("-".join(img.split("/")[-4:-1]))
        )
        for (title, link, img) in get_links()
    ],
    key=lambda x: x[3],
    reverse=True
)

with codecs.open("geralinks-feed.xml", "w", "utf-8") as f:
    f.write(generate_rss_from_posts(posts))

O que sugiro para você seria remover todos estes -> e executar novamente o código. acima esta o código já ajustado, rodei ele e não obtive nenhum erro.

Tenta realizar isto ai e me informa se deu certo ou não.

Além disso fico a disposição para responder quaisquer dúvidas. 😀

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora
 Compartilhar



Sobre o Fórum

Este é um fórum para todos que fazem parte
do ecossistema de uma Software House!

Bem-vindo(a) ao fórum da Casa do Desenvolvedor, uma comunidade completa, onde desenvolvedores, software houses, profissionais de marketing, experiência e vendas, fornecedores de soluções, aficionados por inovação e tecnologia podem tirar dúvidas, compartilhar novidades e conhecimento, trocar experiências e até postar uns memes que só nós da tecnologia entendemos 😅

Crie agora sua conta e vamos juntos fortalecer
o desenvolvimento de software no Brasil! 🇧🇷

×
×
  • Create New...