Premièrement, nous analysons brièvement le programme de crawler à écrire, qui peut être divisé en trois parties :
- adresse URL de jonction
- envoyer une demande
- Enregistrer les photos localement
Après avoir clarifié la logique, nous pouvons formellement écrire le programme du robot d'exploration.
Importer les modules requis
Cette section utilise la bibliothèque urllib pour écrire des robots d'exploration, et la suivante importe les modules utilisés par le programme :
from urllib import request
from urllib import parse
Épissage d'adresses URL
Définissez les variables d'URL et les adresses d'URL de jonction. Le code ressemble à ceci :
url = 'http://www.baidu.com/s?wd={}'
#想要搜索的内容
word = input('请输入搜索内容:')
params = parse.quote(word)
full_url = url.format(params)
Envoyer la demande à l'URL
L'envoi d'une demande se décompose principalement en les étapes suivantes :
- Créer un objet de requête - Requête
- Obtenir l'objet de réponse - urlopen
- Obtenir le contenu de la réponse - lire
Le code ressemble à ceci :
#重构请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
#创建请求对应
req = request.Request(url=full_url,headers=headers)
#获取响应对象
res = request.urlopen(req)
#获取响应内容
html = res.read().decode("utf-8")
enregistrer en tant que fichier local
Enregistrez les photos explorées localement, ici vous devez utiliser l'opération file IO programmée par Python, le code est le suivant :
filename = word + '.html'
with open(filename,'w', encoding='utf-8') as f:
f.write(html)
Le programme complet ressemble à ceci :
from urllib import request,parse
# 1.拼url地址
url = 'http://www.baidu.com/s?wd={}'
word = input('请输入搜索内容:')
params = parse.quote(word)
full_url = url.format(params)
# 2.发请求保存到本地
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
req = request.Request(url=full_url,headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
# 3.保存文件至当前目录
filename = word + '.html'
with open(filename,'w',encoding='utf-8') as f:
f.write(html)
Essayez d'exécuter le programme, entrez l'aide à la programmation, confirmez la recherche, puis vous trouverez le fichier "programming help.html" dans le répertoire de travail actuel de Pycharm.
La programmation fonctionnelle modifie le programme
La programmation fonctionnelle Python peut rendre les idées du programme plus claires et plus faciles à comprendre. Ensuite, modifiez le code ci-dessus en utilisant l'idée de la programmation fonctionnelle.
Définissez la fonction correspondante et exécutez le programme du robot en appelant la fonction. Le code modifié ressemble à ceci :
from urllib import request
from urllib import parse
# 拼接URL地址
def get_url(word):
url = 'http://www.baidu.com/s?{}'
#此处使用urlencode()进行编码
params = parse.urlencode({'wd':word})
url = url.format(params)
return url
# 发请求,保存本地文件
def request_url(url,filename):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
# 请求对象 + 响应对象 + 提取内容
req = request.Request(url=url,headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
# 保存文件至本地
with open(filename,'w',encoding='utf-8') as f:
f.write(html)
# 主程序入口
if __name__ == '__main__':
word = input('请输入搜索内容:')
url = get_url(word)
filename = word + '.html'
request_url(url,filename)