2021-08-05 python爬虫

python爬虫


(1)安装requests库

在cmd中

pip install requests

检查是否安装成功

pip list

(2)爬取图片

import requests

path='E:\\爬虫.jpg'
url='http://blog.02868.cn/zb_users/upload/2019/10/20191018113233Python-Crawler.png'

#获取html网页,<Response对象名>=requests.get(url)
r=requests.get(url)

#输出状态码,200,表示服务器正常响应,除200以外,皆表示服务器不正常响应
print(r.status_code)

#当执行完内容后,自动关闭文件,with open(文件名,操作模式) as 文件对象名
#open()函数用于打开一个文件,创建一个file对象
#wb,以二进制格式打开一个文件只用于写入。
#如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。

with open(path,'wb') as f:
    #以字节形式(二进制)返回,通常在爬取图片或音乐使用,<Response对象名>.content
    f.write(r.content)

#关闭文件
f.close()

(3)爬取网页内容

import requests

url='http://www.glidedsky.com/level/web/crawler-basic-1'

#User-Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分
#Cookie 用于存储 web 页面的用户信息
#静态网页,可忽略headers的添加

headers = {
    'Cookie': "__gads=ID=63d546e8a3265b6c-223f828ba4ca007b:T=1628086389:RT=1628086389:S=ALNI_MZb-0PQifOi6J3dDFChQN8bbhTk_Q; _ga=GA1.2.1671214706.1628086390; _gid=GA1.2.91772907.1628086391; Hm_lvt_020fbaad6104bcddd1db12d6b78812f6=1628086390,1628146184; footprints=eyJpdiI6IktCN3FMb2VRZVJlTWkzXC9DdVhKSTV3PT0iLCJ2YWx1ZSI6ImM5SVh1RmFHWTN5WFJrWGJMK1JOYmZxdmRVaEc2emdxaldsN0ZFM2xpd05IUW5JREhudFhqalwvdjduZVR2blhVIiwibWFjIjoiMmE4YmJhZDBmMGIwODg3MDE5OTQ2YmNhNjIyOTRlYjUxNDdiN2RiMGRkNGI0OGZjOGYzNGM4Y2UzNjNkZWEyMyJ9; XSRF-TOKEN=eyJpdiI6ImsyZTQ3ODdCNlpyVkpKdmJjMUx4M1E9PSIsInZhbHVlIjoiZ3hDS3htdVNJaUJzMGdwZzR6QlpQNWc4Rk15QWY1dDZkQ29zYVR4SWlSOVlLXC9HNlduRGFiMDNhMFFzZWhvSVciLCJtYWMiOiJjYTRlOTAxZjNiYjJmM2YxMGVlOWVlM2NhY2ZiYjZjYjZhZGY1MTJhMWJjOTlkZmI5MGMxNTUzY2I5NDNmZWY0In0%3D; glidedsky_session=eyJpdiI6InpnSmI2MFJcLzU1R0FGdlZVdGNtZkhBPT0iLCJ2YWx1ZSI6IkJ5TGJSNEpuTllOWmttNXRaNWJuYXdNanpueTdmMmwwMDhGVU5DTVZhbmI2ekR4KzNUM0lvUXg2KzNHKzlmNHgiLCJtYWMiOiIyNGUwZGI0MGY4YzY5ZTAxY2Q1ZTgxMWNhOTA2OWM0YjcyNzBiZDAyYmI0OWJkYjIzY2NkMTU4NTA3ODYzODhkIn0%3D; Hm_lpvt_020fbaad6104bcddd1db12d6b78812f6=1628147632",
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"
}

r=requests.get(url,headers=headers)

try:
    #判断返回的Response类型状态是不是200,如果不是200,产生一个HttpError的异常。
    r.raise_for_status()
    #(通过猜测)获取/修改网页编码,<requests对象名>.encoding
    #从网页的内容中分析网页编码的方式,<requests对象名>.apparent_encoding
    r.encoding=r.apparent_encoding
    #返回字符串类型的网页内容编码,<requests对象名>.text
    #print(r.text)
except:
    print('响应异常')

(4)页面解析—熬制一锅美味汤

安装beautifulsoup4库

pip install beautifulsoup4

Beautiful Soup 4.4.0 文档,https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/


步骤:创建beautifulsoup对象->搜索节点->访问节点名称/节点属性值/节点文字

from bs4 import BeautifulSoup

##创建一个BeautifulSoup解析对象,<对象名>=BeautifulSoup(html字符串,解析方式)
soup=BeautifulSoup(r.text,'html.parser')

##搜索节点
#单个,find(节点名称/节点属性值/节点文字)
#所有,find_all(节点名称/节点属性值/节点文字)
tag=[]
tag=soup.find_all(class_='col-md-1')

n=0
for num in tag:
    a=int(num.string[29:32])
    n=n+a
print(n)

关于encoding的问题

网页编码问题,网页编码与代码编码不一致产生乱码

url='http://www.most.gov.cn/index.html'
r=requests.get(url)

try:
    r.raise_for_status()
    #r.encoding=r.apparent_encoding
    #此时由于缺少正确的网页编码,爬取的中文字符为乱码
    print(r.text)
except:
    print('响应异常')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向岸看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值