Aprendizado do rastreador Python 17
escreva o título do diretório aqui
-
Uso avançado parte 2
-
Manutenção da sessão
# 之前我们学过 post 与 get方法做到模拟网页进行请求,这两种方法是相互独立的,即相当于两个浏览器打开了不同的页面 # 基于以上特点,我们使用爬虫时,用 POST 方法登录网站之后,再想要使用get方法获取请求个人信息页面显然不能得到我们想要的信息,那么如何解决这种问题呢? # 方法一 在两次请求中传入相同的cookie参数 # 方法二 利用Session对象,进行session维护
Exemplo:
import requests r0 = requests.get('https://www.httpbin.org/cookies/set/number/123456789') # 在我们设置cookie并成功获得请求后,再次向该网站请求 print(r0.text) r1 = requests.get('https://www.httpbin.org/cookies') # 可以发现返回的cookies字段为空 print(r1.text)
resultado da operação:
Usando o objeto Session:
# session 维持 import requests s = requests.session() r0 = s.get('https://www.httpbin.org/cookies/set/number/123456789') r1 = s.get('https://www.httpbin.org/cookies') print(r0.text) print(r1.text)
resultado da operação:
-
Verificação de certificado SSL
# 现在很多网站要求使用HTTPS协议,但是有些网站可能没有设置好HTTPS证书,或者网站的HTTPS 证书可能不被CA机构认可,这是这些网站可能会出现SSL证书错误的提示。 # 例如我们访问这个网站 https://ssr2.scrape.center/ # 就会有如下提示
Vamos usar a biblioteca de solicitações para solicitar um site assim:
import requests resp = requests.get('https://ssr2.scrape.center/') print(resp.status_code) # 嗯?怎么回事?怎么不让我们访问
Executar resultado: nenhum resultado... nos lança um erro SSLError
Defina o parâmetro de verificação para ignorar a verificação
import requests # verify 参数设置为 True(默认值) 时会自动验证,反之则不会进行验证 resp = requests.get('https://ssr2.scrape.center/',verify=False) print(resp.status_code)
Desta forma, o código de status pode ser obtido:
Mas descobrimos que o programa ainda deu um aviso, esperando que especifiquemos um certificado
Definir ignorar avisos para suprimir avisos
import requests from requests.packages import urllib3 urllib3.disable_warnings() resp = requests.get('https://ssr2.scrape.center/', verify=False) print(resp.status_code)
resultado da operação:
Especifique o certificado para ignorar o aviso
Para configurar o certificado, você precisa ter arquivos crt e key localmente e especificar seus caminhos, e a chave do certificado privado local deve ser descriptografada.
Não olhe para mim, como se eu pudesse pular esta etapa, eu não
# 格式 import requests resp = requests.get('https://ssr2.scrape.center/', cert=('path/**.crt', 'path/**.key'))
-
Hoje termina, continua...