15天学会爬虫 第三天

本文是爬虫学习的第三天内容,涵盖了三元运算符、使用requests处理cookies、分析js以理解动态请求、从响应中获取cookie以及处理自建证书的HTTPS请求。通过实例讲解了如何在Python中模拟js执行和处理证书问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫

第三天

1.三元运算符

a = b if b else c # 如果b为真,a=b,否则a=c

if b:
    a = b
else:
    a = c

2.requests处理cookies

  1. 将cookie字符串直接放入headers中

  2. 准备cookie字典,在requests请求实传入cookies参数中

    cookies_dict = {}
    requests.get(url,headers=headers,cookies=cookies_dict)
    

3.js分析

  1. 观察变化
  2. 定位js
    • 找到触发请求的标签,在标签的eventlistener中找到方法,定位js
    • 全局搜索url的关键字
  3. 执行js
  4. python代码模拟js

4.requests获取cookie

requests.utils.dict_from_cookiejar:把cookiejar对象转化为字典

import requests

url = "http://www.baidu.com"
response = requests.get(url)
print(type(response.cookies)) # <class 'requests.cookies.RequestsCookieJar'>

cookies = requests.utils.dict_from_cookiejar(response.cookies)
print(cookies)

5.requests处理证书

国内部分网站虽然采用HTTPS协议,但证书是自行构建的,并非由权威机构颁发的,使用google浏览器访问时,会提示以下错误:

利用requests访问这类网站时,会报错如下:

requests.exceptions.SSLError: HTTPSConnectionPool(host='sls.cdb.com.cn', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))

对此,如果需要抓取这类网站时,可以在get或者post请求中,添加一个verify参数,不去校验证书即可

url = "https://sls.cdb.com.cn/"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0",
}
response = requests.get(url=url, headers=headers,verify=False)

print(response.status_code)

此时,可能会有警告信息,但不会报错了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值