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

您所在的位置:网站首页 beautifulsoup解析网页的基本方法 Python爬虫 requests+beautifulsoup爬取数据教程及爬取商品数据实战

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

2023-08-11 08:14| 来源: 网络整理| 查看: 265

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

前言

最近接到了个爬取一些网站积分商品数据的需求,学习了一下爬虫的知识。为了避免以后忘记,特写一篇文章来总结一下,也希望能帮到对爬虫有兴趣的同学。本文将从爬取网站商品数据的需求入手,详细介绍如何爬取网页的数据以及将爬取到的数据写入到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中查找商品的数据,可以发现所有的商品数据都存放在标签中: 在这里插入图片描述 使用以下代码获取标签中的数据:

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_data = bf.find_all('ul', class_ = 'list_pro clearfix') print(ul_data)

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

运行结果中已经可以看到商品的名称和类别信息了,当然这还不够,我们还需把数据继续解析出来。 继续查看HTML代码: 在这里插入图片描述 商品类别在标签下的

标签中,商品名称在标签下的标签中。 正所谓由浅入深,我们先试着把第一个商品的数据解析出来:

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_data = bf.find_all('ul', class_ = 'list_pro clearfix') c6_data = ul_data[0].find_all('p',class_ = 'c6') c6 = c6_data[0].find_all('a') print(c6[1].string) h4_data = ul_data[0].find_all('h4') h4 = h4_data[0].find_all('a') print(h4[0]['title'])

在这里插入图片描述 代码解析: (1)ul_data[0],c6_data[0],h4_data[0]:find_all()方法返回的是所有匹配结果的列表,而[0]则是列表中的第一个元素。 (2)c6[1].string:

标签下有两个



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3