Je travaille actuellement sur un grattoir proxy juste pour le plaisir, mais j'ai rencontré un problème

Je souhaite que la sortie du fichier soit enregistrée dans un fichier txt au format suivant

185.98.232.22:8080
144.217.161.149:8080
103.106.57.174:8080
49.156.47.61:8080
179.109.144.16:44222

Actuellement, lorsque j'essaie d'écrire un fichier txt, j'obtiens uniquement le premier proxy et pas les autres, donc j'obtiens ceci

185.98.232.22:8080

Voici mon code

from bs4 import BeautifulSoup
import requests

proxyDomain = "https://free-proxy-list.net/"

r = requests.get(proxyDomain)

soup = BeautifulSoup(r.content,"html.parser")

table = soup.find("table",{"id" : "proxylisttable"})

for row in table.find_all("tr"):
    colums = row.find_all("td")
    try:
        print ("%s:%s" % (colums[0].get_text(), colums[1].get_text()))
        Scrapped ="%s:%s" % (colums[0].get_text(), colums[1].get_text())
        file = open("newprox.txt","w")
        file.write(Scrapped)
        file.close()
    except:
        pass
0
User1337 13 mars 2019 à 04:46

2 réponses

Meilleure réponse

Tout d'abord si vous voulez boucler et écrire vous devez ouvrir votre fichier en mode "ajout", pas "écriture", car ce dernier écrase le contenu existant (voir docs). Mais vous ne devez pas ouvrir/fermer à chaque itération car cela est inefficace.

En ce qui concerne les lignes multiples, vous devez ajouter \n à chaque ligne de texte écrite.

Vous voulez donc ceci:

with open("newprox.txt","w") as file:
    for row in table.find_all("tr"):
        colums = row.find_all("td")
        try:
            Scrapped = "%s:%s" % (colums[0].get_text(), colums[1].get_text())
            print(Scrapped)
            file.write(Scrapped + "\n")
        except:
            pass

Ou faites ressembler votre bloc try à ceci (vraiment le même résultat):

        Scrapped = "%s:%s\n" % (colums[0].get_text(), colums[1].get_text())
        print(Scrapped, end="")
        file.write(Scrapped)
0
Marcin Orlowski 13 mars 2019 à 02:28

Mettez à jour votre code pour qu'il corresponde aux éléments suivants:

    file = open("newprox.txt","a")
    file.write(Scrapped + "\n")
0
aedry 13 mars 2019 à 02:09