当前位置: 首页 > news >正文

基于Python实现web网页内容爬取

文章目录

  • 1. 网页分析
  • 2. 获取网页信息
    • 2.1 使用默认的urllib.request库
    • 2.2 使用requests库
    • 1.3 urllib.request 和 requests库区别
  • 2. 更改用户代理
  • 3. BeautifulSoup库筛选数据
    • 3.1 soup.find()和soup.find_all() 函数
  • 4. 抓取分页链接
  • 参考资料

在日常学习和工作中,我们经常会遇到需要爬取网页内容的需求,今天就如何基于Python实现web网页内容爬取进行讲解。

1. 网页分析

用Chrome浏览器打开网页(https://car.yiche.com/)并进行分析。

在这里插入图片描述

F12键打开开发者视图,如下所示:
在这里插入图片描述

在网页页面上想要查看的页面内容处,点击 右键->检查(inspect) ,开发者模式中会自动选中对应的HTML代码。

在这里插入图片描述
分析发现车牌的名字在 name=“div”, attrs={“class”: “item-brand”}里面

2. 获取网页信息

在Python中,我们可以使用 urllib.requestrequests 这两个库来发送HTTP请求。这两个库都是用来处理URLs的,但是有一些区别。

2.1 使用默认的urllib.request库

urllib.request是Python标准库中的一个模块,用于处理URLs的打开,读取和下载。它提供了一个简单的接口来发送HTTP请求,并可以处理响应数据。

import urllib.request
from bs4 import BeautifulSoupurl = "https://car.yiche.com/"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "html.parser")
result_list = []# 筛选数据
tag_list = soup.find_all(name="div", attrs={"class": "item-brand"})
for tag in tag_list:result_list.append(tag.attrs["data-name"])print(result_list)

2.2 使用requests库

requests是一个第三方库,它提供了更简洁的API来发送HTTP请求,并处理响应数据。使用requests库可以更方便地发送各种类型的请求,如GET,POST等,并可以设置请求头,传递参数等。

首先在环境中安装 requests 库,命令如下:

pip install requests
from bs4 import BeautifulSoup
import requestsurl = "https://car.yiche.com/"
req = requests.get(url=url)
soup = BeautifulSoup(req.content, "html.parser")
result_list = []# 筛选数据
tag_list = soup.find_all(name="div", attrs={"class": "item-brand"})
for tag in tag_list:result_list.append(tag.attrs["data-name"])print(result_list)

输出如下:

['奥迪', '埃安', 'AITO', '阿维塔', '阿斯顿·马丁', '阿尔法·罗密欧', 'AUDI', '阿莫迪罗', 'AUXUN傲旋', '爱驰', 'Apollo', 'ALPINA', 'Abarth', 'ABT', '阿尔特', '安凯客车', 'Aurus', 'Arash', '安徽猎豹', 'ATOM', '艾康尼克', 'ASKA', 'Alef', 'APEX', 'Agile Automotive', 'ATS', 'AKXY2', 'Alpine', 'Aspark', 'Aviar', 'AURA', 'AIM', 'Ariel', 'Aria', 'Atlis', 'Alpha Motor', 'AFEELA', 'AEHRA', 'AC Schnitzer', 'Adria', 'AZNOM', 'AEV ROBOTICS', '比亚迪', '奔驰', '本田', '宝马', '别克', '保时捷', '北京', '奔腾', '标致', '宝骏', '宾利', 'BAW北汽制造', '北京汽车', '布加迪', '博速', '巴菲特', '霸王龙', '奔驰卡车',.......]

1.3 urllib.request 和 requests库区别

urllib.requestrequests 这两个库的主要区别如下:

  • urllib.request是Python的标准库,而requests是第三方库,需要额外安装。
  • urllib.request是比较底层的库,需要手动处理请求和响应,而requests提供了更高级的API,简化了请求和响应的处理。
  • requests库更加简洁和易于使用,并提供了更多的功能,如自动处理重定向,会话管理等。

参考资料:python urllib.request和request的区别

2. 更改用户代理

在使用Python进行网页爬取时,许多网站会通过检查HTTP请求头中的User-Agent字段来识别发出请求的客户端类型。设置用户代理(User-Agent)是为了模仿真实浏览器的请求,避免被网站识别为自动化工具而遭封锁,同时确保获取完整的网页内容,并遵守网站的访问规则。

agent = {'User-Agent': 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit / 531.21.10(KHTML, likeGecko) Mobile / 7B405'}
req = requests.get(url=url, headers=agent)

3. BeautifulSoup库筛选数据

BeautifulSoup库是一种HTML解析库,可以将HTML文档解析成Python对象,使得开发者可以方便地从HTML文档中提取数据。

首先需要安装 BeautifulSoup 库。

pip install BeautifulSoup4

3.1 soup.find()和soup.find_all() 函数

Python中bs4的soup.find()和soup.find_all()用法

4. 抓取分页链接

参考资料

Python中bs4的soup.find()和soup.find_all()用法
使用Python进行网页抓取

http://www.lryc.cn/news/500886.html

相关文章:

  • Centos7和9安装mysql5.7和mysql8.0详细教程(超详细)
  • 星闪WS63E开发板的OpenHarmony环境构建
  • MongoDB数据建模小案例
  • MySQL(库的操作)
  • 【55 Pandas+Pyecharts | 实习僧网Python岗位招聘数据分析可视化】
  • java中23种设计模式的优缺点
  • 【JavaEE】多线程(7)
  • 如何高效的向AI大模型提问? - 提示工程Prompt Engineering
  • 4K高清壁纸网站推荐
  • EasyExcel注解使用
  • Visual Basic 6 关于应用的类库 - 开源研究系列文章
  • C#泛型
  • go语言的成神之路-标准库篇-fmt标准库
  • React Native的router解析
  • Linux update-alternatives 命令详解
  • 【踩坑】修复报错libcurl.so.4、LIBFFI_BASE_7.0、libssl.so.3
  • python网络爬虫基础:html基础概念与遍历文档树
  • 【已解决】MacOS上VMware Fusion虚拟机打不开的解决方法
  • 经典视觉神经网络1 CNN
  • 一些硬件知识【2024/12/6】
  • 网络安全法-网络安全支持与促进
  • 【Docker】如何在Docker中配置防火墙规则?
  • Cesium 问题: 添加billboard后移动或缩放地球,标记点位置会左右偏移
  • 使用Python3 连接操作 OceanBase数据库
  • SpringBoot该怎么使用Neo4j - 优化篇
  • Flutter如何调用java接口如何导入java包
  • Redis 数据结构(一)—字符串、哈希表、列表
  • day1:ansible
  • 如何设置Java爬虫的异常处理?
  • 阿里云盘permission denied