Python爬虫 requests+beautifulsoup爬取数据教程及爬取商品数据实战

本文介绍了使用Python的requests和beautifulsoup库爬取静态网页数据的教程,具体以爬取招商银行信用卡积分商城的商品名称和分类为例,详细阐述了从获取HTML到解析数据再到保存到CSV文件的整个过程。
摘要由CSDN通过智能技术生成

网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

前言

最近接到了个爬取一些网站积分商品数据的需求,学习了一下爬虫的知识。为了避免以后忘记,特写一篇文章来总结一下,也希望能帮到对爬虫有兴趣的同学。本文将从爬取网站商品数据的需求入手,详细介绍如何爬取网页的数据以及将爬取到的数据写入到CSV文件中。本文爬取的是静态网页,爬取动态网页的教程欢迎查看另一篇文章(暂时还没有写。。写了会贴出来),分辨静态网页和动态网页的方法在下文实战-浏览器检查网页中。

安装

本文使用Python的requests和beautifulsoup库爬取数据,安装python的部分本文就不叙述了。
Requests是一个基于Apache2协议开源的Python HTTP库,使用requests库可以获取网页的HTML信息。Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。win+r,输入cmd打开命令行界面,分别输入以下命令安装requests和beautifulsoup库:

pip install requests
pip install beautifulsoup4

下面会根据实战需求讲解requests库和Beautiful Soup库的部分使用方法,详细内容可查看官方文档。
requests库:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
Beautiful Soup库:http://beautifulsoup.readthedocs.io/zh_CN/latest/

实战

1.需求
招商银行信用卡积分兑换商城:https://www.51credit.com/jifen/zhaoshang/p1/
爬取招商银行信用卡积分兑换商城中的商品名称和商品分类。
在这里插入图片描述

2.浏览器检查网页
输入网址进入网页后,点按F12或者鼠标右键-检查,即可看到一大堆代码,也就是网页的HTML。在HTML中可以找到商品的信息:
在这里插入图片描述
也可以鼠标右键-查看页面源代码查看网页的HTML。可以直接在页面源代码HTML中找到数据的网页是静态网页,找不到的就是动态网页。

静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。

静态网页的爬取数据相对简单点,获取到网页的HTML,从HTML中解析到自己想要的数据,然后保存即可。

3.requests库获取HTML数据
使用requests.get()方法获取网页的HTML:

import requests
url = 'https://www.51credit.com/jifen/zhaoshang/p1/'
req = requests.get(url)
html = req.text
print(html)

requests.get()方法必须设置的一个参数就是url,因为我们得告诉GET请求,我们的目标是谁,我们要获取谁的信息。运行结果为:
在这里插入图片描述
可以看出,我们已经获取了网页的HTML,接下来就是从HTML中解析出商品的数据了。

3.Beautiful Soup库解析HTML数据
F12进入检查,从HTML中查找商品的数据,可以发现所有的商品数据都存放在标签<ul class="list_pro clearfix">中:
在这里插入图片描述
使用以下代码获取标签<ul class="list_pro clearfix">中的数据:

import requests
from bs4 import BeautifulSoup
url = 'https://www.51credit.com/jifen/zhaoshang/p1/'
req = requests.get(url)
html = req.text
bf = BeautifulSoup(html)
    
#获取标签<ul class="list_pro clearfix">中的内容
ul_data = bf.find_all('ul', class_ = 'list_pro clearfix') 
print(ul_data)

find()返回的是第一个匹配的标签结果,find_all()方法返回的是所有匹配结果的列表
运行结果为:
在这里插入图片描述

运行结果中已经可以看到商品的名称和类别信息了,当然这还不够,我们还需把数据继续解析出来。
继续查看HTML代码:
在这里插入图片描述
商品类别在<li>标签下的<p class="c6">标签中,商品名称在<li>标签下的<h4>标签中。
正所谓由浅入深,我们先试着把第一个商品的数据解析出来:

import requests
from bs4 import BeautifulSoup
url = 'https://www.51credit.com/jifen/zhaoshang/p1/'
req = requests.get(url)
html = req.text
bf = BeautifulSoup(html)
    
#获取标签<ul class="list_pro cl
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值