【实际应用python】如何爬取网站上想要的内容?

无论什么都有一个背景工具或者说运行的环境。下面是背景描述:
我使用的工具是:解释器:python3.7 编译器:VScode 库管理器:pip
这里需要调用的模块: requests BeautifulSoup

在学习python的过程中,会有许多有趣好玩的事情发生,也通过一个个功能实现了自己一个个天马行空的愿望。
下面来说下如何爬取网站内容,这个是什么意思呢,就是用python语言来查看网页的内容:
1.案例:
爬取网页的网址
https://alexa.chinaz.com/Country/index_CN.html

2.代码实现:
(1)第一小步

import requests
res = requests.get('https://alexa.chinaz.com/Country/index_CN.html')
print(res)

这个句子很简单,分三个步骤:
第一:调用requests模块;
第二:获取网址内容;
第三:打印结果。

(2)第二小步
在成功拿到该网站的入场券之后,我们就要开始搞事情了,搞我们自己想搞的事情,取我们自己所需之物。需要把内容呀格式呀做一个转换。
这时候也发现这个打印结果有点不对呀:<Response [200]>
一看就不是我们想要的,为啥啦,没有转换成字符串呀,所以:

import requests
res = requests.get('https://alexa.chinaz.com/Country/index_CN.html')
res_str = res.text
print(res_str)

但,这个之后咋整了?

(3)第三小步
我们需要解析数据,经过BeautifulSoup的过滤包装下,就一下提高了档次,变成“无人不知”的大明星啦。这里的BeautifulSoup是个模块,需要用pip进行安装。

import requests
res = requests.get('https://alexa.chinaz.com/Country/index_CN.html')
res_str = res.text
print(res_str)

from bs4 import BeautifulSoup
res_bs = BeautifulSoup(res_str.text,'html.parser')
print(res_bs)

现在,我想做一个代码的优化,并引入time模块

import requests,time
from bs4 import BeautifulSoup

url = 'https://alexa.chinaz.com/Country/index_CN.html'
res = requests.get(url)

if res.status_code == 200:
    print('恭喜你成功进入网站')
    
res_str = res.text
print(res_str)

res_bs = BeautifulSoup(res_str,'html.parser')
print(res_bs)

对,你没看错,这只是走了过场,包装了一下,其实质是没有变的。变的是资源,能够hold住一切的资源。

(4)第四小步
现在,包装好了,我们就要开始充分利用资源进行提取数据,也就是开始让你这个大明星出门赚钱啦。

import requests,time # 引用两个模块
from bs4 import BeautifulSoup # 引用一个模块

url = 'https://alexa.chinaz.com/Country/index_CN.html' # 赋值链接
res = requests.get(url) # 获取这个链接的数据

if res.status_code == 200: # 这个步骤是为了看有没有正常访问网站
    print('恭喜你成功进入网站')
    
res_str = res.text # 这个是解析成为字符串
print(res_str)

res_bs = BeautifulSoup(res_str,'html.parser') # 进一步解析成为bs4格式的数据,以便下面提取
print(res_bs)

res_fi = res_bs.find('div')
print(res_fi)

(5)第五小步
我们通过进一步提取单个的信息来缩小范围

import requests,time # 引用两个模块
from bs4 import BeautifulSoup # 引用一个模块

url = 'https://alexa.chinaz.com/Country/index_CN.html' # 赋值链接
res = requests.get(url) # 获取这个链接的数据

if res.status_code == 200: # 这个步骤是为了看有没有正常访问网站
    print('恭喜你成功进入网站')
    
res_str = res.text # 这个是解析成为字符串


res_bs = BeautifulSoup(res_str,'html.parser') # 进一步解析成为beautifulsoup格式的数据,以便下面提取


res_fia = res_bs.find_all('div',class_='righttxt') # 查找所有符合条件的一个情况

for wangzhi in res_fia: # 以循环的方式遍历,然后在进行tag提取
    chenggong = wangzhi.find(class_='tohome')
    print(chenggong['href'])

这里的class_是为了避免与python的类class冲突哦。其实,最终最下来,都是掌握提取数据的方式就足够了,就能够知道你在做什么,以及想要实现的结果啦。

以上代码完美的执行,抽离出网页中的流量网站
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zyhub

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

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

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

打赏作者

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

抵扣说明:

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

余额充值