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

凡是过往,皆为序章。

前言 

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

获取数据

requests库

1. requests库,是一个专注于发送HTTP请求的库。

2. 安装requests库pip install requests

pip install requests

get()方法

1. get()方法帮助用户向服务器发出请求,并且返回用户收到的响应

2. get()方法参数要爬取的网址,并使用res变量储存接收到的响应。

response = requests.get('网址')

消息头

1. 这里以豆瓣Top250为例,进行爬取。

2. 用户使用get()方法获取的响应是一个类对象,如果直接打印,则会打印出类名和响应码

3. 而此时这里的响应码是418:服务器拒绝冲泡咖啡,因为它是一个茶壶。即服务器直接识别了这是一个爬虫而且用户,所以拒绝了用户的要求

4. 服务器识别的依据是消息头中的:user-agent

5. 所以,用户需要重新定制一个消息头,然后还需在get()方法申明headers新的定义,此时这里的响应码是200,说明伪装成功。

6. 如果用户想看看响应内容,则打印res.text,输出的正是网页的HTML源代码

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'
}

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

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bs4

BeautifulSoup类 

1. BeautifulSoup对象作用: 把HTML文档解析成树形结构

2. 创建BeautifulSoup对象时,需要传入两个参数:需要解析的HTML文档,用于解析HTML文档解析器'html.parser'

3. BeautifulSoup对象是一个树形结构的HTML文档

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对象,有特定的方法去截取需要的信息。

# 导入 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)

致谢

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

 

 

 

 

作者:星霜旅人

物联沃分享整理
物联沃-IOTWORD物联网 » 【Python】从爬虫小白到大佬(二)

发表回复