前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python】从爬虫小白到大佬(二)

【Python】从爬虫小白到大佬(二)

作者头像
风中的云彩
发布2025-01-20 19:04:05
发布2025-01-20 19:04:05
18600
代码可运行
举报
文章被收录于专栏:C/C++的自学之路C/C++的自学之路
运行总次数:0
代码可运行

前言 

1. 由于爬虫爬取数据的过程依次为:获取数据、处理数据、储存数据这三部分。所以这篇笔记将会按照这个顺序进行。 

获取数据

requests库

1. requests库,是一个专注于发送HTTP请求的库。 2. 安装requests库pip install requests

代码语言:javascript
代码运行次数:0
运行
复制
pip install requests

get()方法

1. get()方法帮助用户向服务器发出请求,并且返回用户收到的响应。 2. get()方法参数要爬取的网址,并使用res变量储存接收到的响应。

代码语言:javascript
代码运行次数:0
运行
复制
response = requests.get('网址')

消息头

1. 这里以豆瓣Top250为例,进行爬取。 2. 用户使用get()方法获取的响应是一个类对象,如果直接打印,则会打印出类名和响应码。 3. 而此时这里的响应码是418:服务器拒绝冲泡咖啡,因为它是一个茶壶。即服务器直接识别了这是一个爬虫而且用户,所以拒绝了用户的要求。 4. 服务器识别的依据是消息头中的:user-agent。 5. 所以,用户需要重新定制一个消息头,然后还需在get()方法申明headers新的定义,此时这里的响应码是200,说明伪装成功。 6. 如果用户想看看响应内容,则打印res.text,输出的正是网页的HTML源代码

代码语言:javascript
代码运行次数:0
运行
复制
headers ={
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
代码语言:javascript
代码运行次数:0
运行
复制
import requests
from bs4 import BeautifulSoup
headers ={
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
res = requests.get('https://book.douban.com/top250/',headers=headers)

处理数据

BeautifulSoup库 

1. BeautifulSoup库,通过将网页源代码解析成BeautifulSoup对象,变成一个树状结构,可以把结构复杂的网页代码内部组织关系捋清楚。  2. 安装BeautifulSoup库pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bs4

代码语言:javascript
代码运行次数:0
运行
复制
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bs4

BeautifulSoup类 

1. BeautifulSoup对象作用: 把HTML文档解析成树形结构。 2. 创建BeautifulSoup对象时,需要传入两个参数:需要解析的HTML文档,用于解析HTML文档解析器'html.parser'。 3. BeautifulSoup对象是一个树形结构的HTML文档

代码语言:javascript
代码运行次数:0
运行
复制
import requests
from bs4 import BeautifulSoup
headers ={
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
res = requests.get('https://book.douban.com/top250/',headers=headers)
soup=BeautifulSoup(res.text,'html.parser')

提取数据 

CSS选择器

基本选择器 

1. CSS选择器CSS语言中的一部分,能通过HTML元素类型标识关系快速选择符合条件的所有元素,称为元素选择器。 2. 打开开发者工具,切换到元素面板,按Ctrl+F打开搜索栏,搜索栏会提示你通过字符串CSS选择器XPath检索,在搜索栏内输入div(或者其他元素),表示检索此类型元素,此时开发者工具会将所有符合条件的内容用黄色底色标注出来。 3. 其中靠class属性值检索的选择器被称为类选择器,需要写成'.xxx',表示检索所有class属性值xxx的元素;靠ID属性值检索的被称为ID选择器,需要写成#xxx,表示检索所有ID属性值为xxx的元素。 4. 选择器、ID选择器与元素选择器一起并称为基本选择器。 5. 选择器、ID选择器通常不会孤立出现,而是配合元素选择器一起使用。

组合选择器 

1. 基本选择器无法满足我们需求时,我们可以转换思路,根据元素与其它元素之间的关系,将若干个基本选择器组合起来形成组合选择器,进一步提升检索精确度。 2. 元素与元素之间的关系可以分为祖先–后代祖先–直接后代兄弟–兄弟三类。

select()方法 

1. BeautifulSoup对象有一个名为select()的方法。我们将CSS选择器传进去,它会返回一个列表,列表中每个元素都是符合条件的检索结果。  2. 此时的结构是一个列表,也是一个Tag对象,有特定的方法去截取需要的信息。

代码语言:javascript
代码运行次数:0
运行
复制
# 导入 requests 库
import requests
# 从 bs4 库导入 BeautifulSoup
from bs4 import BeautifulSoup
# 定制消息头
headers = {
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (HTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
# 向 https://book.douban.com/top250/ 发送带消息头的请求
# 并将响应结果储存到 res 变量中
response=requests.get('https://book.douban.com/top250/',headers=headers)
# 将响应结果的文本内容解析为 BeautifulSoup 对象
# 并保存到变量 soup 中
soup=BeautifulSoup(response.text,'html.parser')
# 所有书名所在元素
book_name=soup.select('div.a')
# 所有书籍信息所在元素
book_info=soup.select('p.pl')
# 遍历每本图书
for everyone in book_info:
  # 获取书籍信息
	info=everyone.text
  # 按“ / ”分割字符串
	info_list=info.split('/')
  # 结果列表中第一项为作者信息
	author=info_list[0]
  # 倒数第三项为出版社信息
	publish=info_list[-3]
  # 打印作者、出版社信息
	print(author,publish)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言 
  • 获取数据
    • requests库
    • get()方法
    • 消息头
  • 处理数据
    • BeautifulSoup库 
    • BeautifulSoup类 
  • 提取数据 
    • CSS选择器
      • 基本选择器 
      • 组合选择器 
    • select()方法 
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档