Compreenda rapidamente a tecnologia central do rastreador Python e rastreie imagens de rede em lotes

Para rastreadores, Python pode ser a primeira escolha para muitos parceiros. Temos que nos concentrar em aprender rastreadores Python. Este artigo ensina como dominar rapidamente o núcleo dos rastreadores Python! Se houver algo confuso, você pode deixar uma mensagem!

 

1. Visão Geral

Este artigo implementa principalmente um rastreador simples, cujo objetivo é baixar imagens de uma página do Baidu Tieba. As etapas para baixar imagens são as seguintes:

Muitas pessoas aprendem python e depois de dominar a gramática básica, não sabem onde encontrar casos para começar.

Muitas pessoas que fizeram estudos de caso não sabem como aprender conhecimentos mais avançados.

Portanto, para esses três tipos de pessoas, irei fornecer a vocês uma boa plataforma de aprendizado, gratuita para receber tutoriais em vídeo, e-books e o código-fonte do curso!

Grupo QQ: 701698587

(1) Obtenha o conteúdo de texto html da página da web;

(2) Analisar as características da tag html das imagens em html e usar análises regulares para analisar a lista de todos os links de url das imagens;

(3) Baixe a imagem para a pasta local de acordo com a lista de links de url da imagem.

2. Implementação de urllib + re

    #!/usr/bin/python
    # coding:utf-8
    # 实现一个简单的爬虫,爬取百度贴吧图片
    import urllib
    import re
    # 根据url获取网页html内容
    def getHtmlContent(url): 
     page = urllib.urlopen(url)
     return page.read()
    # 从html中解析出所有jpg图片的url
    # 百度贴吧html中jpg图片的url格式为:<img ... src="XXX.jpg" width=...>
    def getJPGs(html): 
     # 解析jpg图片url的正则 
     jpgReg = re.compile(r'<img.+?src="(.+?\.jpg)" width') # 注:这里最后加一个'width'是为了提高匹配精确度 
     # 解析出jpg的url列表 
     jpgs = re.findall(jpgReg,html)
     return jpgs
    # 用图片url下载图片并保存成制定文件名
    defdownloadJPG(imgUrl,fileName): 
     urllib.urlretrieve(imgUrl,fileName)
     # 批量下载图片,默认保存到当前目录下
    def batchDownloadJPGs(imgUrls,path ='./'): 
     # 用于给图片命名 
     count = 1 
     for url in imgUrls:
     downloadJPG(url,''.join([path,'{0}.jpg'.format(count)]))
     count = count + 1
    # 封装:从百度贴吧网页下载图片
    def download(url): 
     html = getHtmlContent(url)
     jpgs = getJPGs(html)
     batchDownloadJPGs(jpgs)
    def main(): 
     url = 'http://tieba.baidu.com/p/2256306796' 
     download(url)
    if __name__ == '__main__':
     main()



Execute o script acima, após alguns segundos, o download estará concluído e você poderá ver que a imagem foi baixada no diretório atual:

Insira a descrição da imagem aqui

3. Realização de pedidos + re

O seguinte usa a biblioteca de solicitações para realizar o download e reimplementar as funções getHtmlContent e downloadJPG com solicitações.

#!/usr/bin/python
# coding:utf-8
# 实现一个简单的爬虫,爬取百度贴吧图片
import requests
import re
# 根据url获取网页html内容
def getHtmlContent(url): 
 page = requests.get(url):
 return page.text
# 从html中解析出所有jpg图片的url
# 百度贴吧html中jpg图片的url格式为:<img ... src="XXX.jpg" width=...>
def getJPGs(html): 
 # 解析jpg图片url的正则 
 jpgReg = re.compile(r'<img.+?src="(.+?\.jpg)" width') # 注:这里最后加一个'width'是为了提高匹配精确度 
 # 解析出jpg的url列表 
 jpgs = re.findall(jpgReg,html)
 return jpgs
# 用图片url下载图片并保存成制定文件名
def downloadJPG(imgUrl,fileName): 
 # 可自动关闭请求和响应的模块 
 from contextlib import closing
 with closing(requests.get(imgUrl,stream = True)) as resp:
 with open(fileName,'wb') as f:
 for chunk in resp.iter_content(128):
 f.write(chunk)
# 批量下载图片,默认保存到当前目录下
defbatchDownloadJPGs(imgUrls,path ='./'): 
 # 用于给图片命名 
 count = 1 
 for url in imgUrls:
 downloadJPG(url,''.join([path,'{0}.jpg'.format(count)]))
 print '下载完成第{0}张图片'.format(count)
 count = count + 1
# 封装:从百度贴吧网页下载图片
def download(url): 
 html = getHtmlContent(url)
 jpgs = getJPGs(html)
 batchDownloadJPGs(jpgs)
def main(): 
 url = 'http://tieba.baidu.com/p/2256306796' 
 download(url)
if __name__ == '__main__':
 main()



Saída: mesmo que antes.

Espero que este caso simples de rastreador Python possa ajudar você, que é novo no rastreador Python!
 

Acho que você gosta

Origin blog.csdn.net/Python_kele/article/details/115284926
Recomendado
Clasificación