[Python Web Crawler] 150 palestras Obtenha facilmente notas de curso pagas do Python Web Crawler Parte II - Uso da Biblioteca Básica 1 do Crawler (urllib)

1. biblioteca urllib - integrada

1.1 função urlopen

from urllib import request

resp = request.urlopen('https://www.baidu.com')

print(resp.read(10))
print(resp.readlines())
print(resp.getcode())

1.2 função urlretrieve

Salve um arquivo da página da web no local

from urllib import request

# 通过链接下载文件
request.urlretrieve(url, 保存的文件名)

Por exemplo: 

from urllib import request

# 通过链接下载文件
request.urlretrieve('https://www.sogou.com/', 'sougou.html')

request.urlretrieve('https://pic.baike.soso.com/ugc/baikepic2/6108/20200529140813-1463090803_jpeg_239_300_8762.jpg/0', 'huge.jpg')

1.3 Funções de codificação e decodificação

1.3.1 função urlencode: codificação

Converta dados de dicionário em dados codificados de url

1.3.2 função parse_qs: decodificação

Decodifique os parâmetros de URL codificados

from urllib import parse

data = {'name': '哈哈', 'age': 18}
# urlencode(dict) 参数是字典
ps = parse.urlencode(data)
print(ps)
print(parse.parse_qs(ps))

 1.4 análise de url

função urlparse e função urlsplit

Todos os componentes do url são analisados ​​e divididos para obter as várias partes do url

A diferença é: urlparse tem o atributo params, mas urlsplit não tem esse atributo params

from urllib import parse

url = 'http://www.baidu.com/index.html;user?id=S#comment'

result = parse.urlparse(url)
print(result)
print(result.scheme)
print(result.netloc)
print(result.params)

print('-'*20)

result1 = parse.urlsplit(url)
print(result1)
print(result1.scheme)
print(result1.netloc)
# print(result1.params)会报错,说明urlsplit没有params这个属性

1.5 request.Request 

Adicione alguns cabeçalhos de solicitação à solicitação e use a classe request.Request para alcançar

from urllib import request

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}

res = request.Request('https://www.baidu.com', headers=header)
# print(res)
resp = request.urlopen(res)
print(resp.read())

 

2. Processador ProxyHandler (configurações de proxy): resolva o problema de bloqueio de IP

Muitos sites irão detectar o número de visitas a um determinado IP em um determinado período de tempo (através de estatísticas de tráfego, logs do sistema, etc.) Se houver muitas visitas, o site irá proibir esse acesso ao IP.

Portanto, neste momento, muitas vezes precisamos mudar para um "pequeno número" para continuar a obter os dados que usamos. Essa "trombeta" é o que eu disse, agente.

Princípio da agência:

Antes de solicitar o site de destino, primeiro solicite o servidor proxy e, em seguida, deixe o servidor proxy solicitar o site de destino. O servidor proxy encaminhará os dados para o nosso código após obter os dados do site de destino.

http://httpbin.org/  Este site pode http solicitar alguns parâmetros.

Os agentes comumente usados ​​são:

IP de proxy gratuito Xici: https://mtop.chinaz.com/site_www.xici.net.co.html

Proxy rápido: https://www.kuaidaili.com/

Nuvem de agente: http://www.dailiyun.com/

 

Tome a nuvem proxy como exemplo, use proxy:

Escolha um IP de proxy da nuvem de proxy

from urllib import request

# 没有使用代理
url = 'http://httpbin.org/ip'
resp = request.urlopen(url)
print(resp.read())

#使用代理
url = 'http://httpbin.org/ip'
# 1.使用ProxyHandler创建一个代理handler
handler = request.ProxyHandler({'http': '140.143.6.16:1080'})
# 2.创建opener
opener = request.build_opener(handler)
# 3.使用opener发送一个请求
resp = opener.open(url)
print(resp.read())

O acima é o IP de acesso sem proxy, e o abaixo é o IP após usar o proxy.

Acho que você gosta

Origin blog.csdn.net/weixin_44566432/article/details/108542523
Recomendado
Clasificación