8
votes

Écran intelligent raclage à l'aide de différents proxies et agents utilisateur au hasard?

Je veux télécharger quelques pages HTML de http://abc.com/view_page .aspx? id = L'ID provient d'un tableau de numéros différents.

Je serais intéressé à visiter plusieurs instances de cette URL et à enregistrer le fichier comme [ID] .html à l'aide de différents points IP / Ports proxy.

Je veux utiliser différents agents utilisateur et je souhaite randomiser les temps d'attente avant chaque téléchargement.

Quelle est la meilleure façon de faire cela? urllib2? Pycurl? boucle? Que préférez-vous pour la tâche à la main?

S'il vous plaît conseiller. Merci gars!


2 commentaires

Pourquoi voudriez-vous randomiser les agents utilisateur?


Je ne veux pas révéler que je suis celui que je télécharge la page. Pour inciter, si nous utilisons différents navigateurs au hasard, cela fera consolider mon anonymat, que dites-vous?


3 Réponses :


2
votes

Utilisez UNIX TOOL WGET . Il a la possibilité de spécifier l'agent utilisateur personnalisé et le délai entre chaque récupération de la page.

Vous pouvez voir wget (1) Homme pour plus d'informations.


3 commentaires

C'est un bon début, merci! --Random-whatt peut être utilisé. Pas si sûr de la mise en œuvre du proxy cependant. Des idées?


Je n'ai utilisé que wget pour le scrapplement de base, désolé, je ne peux pas vous donner plus d'informations sur la proxy de la commande.


Utilisation d'un proxy dans Wget: setenv http_proxy = proxy.example.com:8080 ; wget --proxy-user = foo --proxy-mot de passe = barre -user-agent = "Frobzilla / 1.1" [URL]



5
votes

Utilisez quelque chose comme:

import urllib2
import time
import random

MAX_WAIT = 5
ids = ...
agents = ...
proxies = ...

for id in ids:
    url = 'http://abc.com/view_page.aspx?ID=%d' % id
    opener = urllib2.build_opener(urllib2.ProxyHandler({'http' : proxies[0]}))
    html = opener.open(urllib2.Request(url, None, {'User-agent': agents[0]})).read()
    open('%d.html' % id, 'w').write(html)
    agents.append(agents.pop()) # cycle
    proxies.append(proxies.pop())
    time.sleep(MAX_WAIT*random.random())


0 commentaires

2
votes

Si vous ne voulez pas utiliser des proxies ouverts, Checkout proxymesh , qui fait la rotation / randomisation IP pour vous. < / p>


0 commentaires