网站内容抓取(无论什么都有一个背景工具或者说运行的环境。。 )
优采云 发布时间: 2022-03-16 15:19网站内容抓取(无论什么都有一个背景工具或者说运行的环境。。
)
一切都有一个运行它的后台工具或环境。以下是背景说明:
我使用的工具是:解释器:python3.7 编译器:VScode Librarian:pip
这里需要调用的模块:requests BeautifulSoup
在学习python的过程中,会发生很多有趣有趣的事情,通过每一个功能,我都会一一实现自己不切实际的愿望。
先说一下如何爬取网站的内容,这是什么意思,就是用python语言查看网页内容:
1.案例:
抓取网页的 URL
2.代码实现:
(1)第一小步
import requests
res = requests.get('https://alexa.chinaz.com/Country/index_CN.html')
print(res)
这句话很简单,分三步:
第一:调用requests模块;
二:获取URL内容;
第三:打印结果。
(2)第二小步
成功拿到网站的票后,我们就开始做事,做我们想做的事,得到我们需要的东西。内容和格式需要转换。
这时候我也发现打印结果有点不对:
乍一看,这不是我们想要的。为什么,它没有转换成字符串,所以:
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)
现在,我想做一个代码优化并引入时间模块
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)
是的,你没看错,这只是一个过场*敏*感*词*和包装,它的本质并没有改变。改变的是资源,它可以容纳所有的资源。
(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类冲突。其实到最后,掌握数据提取的方法就足够了,这样你就可以知道自己在做什么,想要达到什么样的结果。
以上代码执行完美,从网页中提取流量网站