无论什么都有一个背景工具或者说运行的环境。下面是背景描述:
我使用的工具是:解释器: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冲突哦。其实,最终最下来,都是掌握提取数据的方式就足够了,就能够知道你在做什么,以及想要实现的结果啦。
以上代码完美的执行,抽离出网页中的流量网站