Python爬虫入门(1)---爬虫概述,request请求库,BeautifulSoup解析库

一、爬虫简介

爬虫与普通浏览器的区别

普通浏览器发送请求给服务器,服务器返回后浏览器将数据解析并呈现在页面上
在这里插入图片描述
爬虫从服务器返回的内容中找到有用的信息并保存起来
在这里插入图片描述
网络爬虫模拟浏览器向服务器发送网络请求,获取响应数据。是一种按一定规则自动抓取万维网信息的程序或脚本

二、requests请求库

2.1 requests请求库的下载

windows下直接使用win+R,输入cmd打开dos窗口输pip install requests即可

2.2 requests请求库的使用

'''
本例演示requests的基本使用
    response的常见属性
        response.text:响应体字符串类型
        response.encoding:二进制转换字符使用的编码
        response.content:响应体的二进制类型
'''
# 1.导入模块
import requests
# 2.发送数据,获取响应
response = requests.get('http://www.baidu.com')
# <Response [200]>
print(response)
# 3.获取响应数据
'''
方法一
'''
# 设置编码为utf-8,否则会乱码
response.encoding = 'utf-8'
# 获取响应内容
print(response.text)
'''
方法二
'''
# 获取二进制数据并解码,与上面的结果相同
print(response.content.decode())

三、BeautifulSoup解析库

3.1 BeautifulSoup解析库的下载

需要在命令行先后输入以下两个命令:pip install bs4pip install lxml 即可

3.2 BeautifulSoup的最基本使用

# 1.导入模块
from bs4 import BeautifulSoup
# 2.创建BeautifulSoup对象,指定解析器为lxml
soup = BeautifulSoup('<html>data</html>','lxml')
# <html><body><p>data</p></body></html>
print(soup)

3.3 BeautifulSoup的find方法和Tag标签

'''
BeautifulSoup的find方法
    1.find方法的作用:搜索文档树
    2.find(self,name=None,attrs={},recursive=True,text=None,**kwargs)
        参数:
            name:标签名
            attrs:属性字典名(指定搜索html中的类名,id名等)
            recursive:指定是否递归搜索,若设为False,则只搜索<html>的子标签
            text:根据文本内容查找
        返回值:
            查找到的第一个元素对象
'''
'''
(1)根据标签名进行查找
'''
# 1.导入模块
from bs4 import BeautifulSoup
# 2.准备文档字符串
html = '''<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>超链接</title>
	</head>
	<body>
		<!--文字超链接-->
		<a href="http://www.baidu.com" target="_blank" id="link1">百度1</a>
		<a href="http://www.baidu.com" target="_blank" id="link2">百度2</a>
		<a href="http://www.baidu.com" target="_blank" id="link3">百度3</a>
		<a href="http://www.baidu.com" target="_blank" id="link4">百度4</a>
	</body>
</html>
'''
# 3.创建BeautifulSoup对象
soup = BeautifulSoup(html,'lxml')
# 4.查找title标签
title = soup.find('title')
# <title>超链接</title>
print(title)
# 5.查找第一个a标签
a1 = soup.find('a')
# <a href="http://www.baidu.com" target="_blank">百度1</a>
print(a1)
# 查找所有a标签
# [<a href="http://www.baidu.com" target="_blank" id="link1">百度1</a>,
# <a href="http://www.baidu.com" target="_blank" id="link2">百度2</a>,
# <a href="http://www.baidu.com" target="_blank" id="link3">百度3</a>,
# <a href="http://www.baidu.com" target="_blank" id="link4">百度4</a>]
a = soup.find_all('a')
print(a)
'''
(2)根据id值进行查找
'''
# 方法一:通过命名参数进行指定
a = soup.find(id='link1')
# <a href="http://www.baidu.com" id="link1" target="_blank">百度1</a>
print(a)
# 方法二:使用attrs来指定属性字典
a = soup.find(attrs={
    
    'id':'link1'})
# <a href="http://www.baidu.com" id="link1" target="_blank">百度1</a>
print(a)
# 方法三:根据文本内容进行查找
text = soup.find(text='百度2')
# 百度2
print(text)

'''
    Tag对象
        Tag对象对应原始文档中的XML或HTML标签
        Tag标签有很多方法和属性,可用于遍历文档树和搜索文档树和获取标签内容
'''
# <class 'bs4.element.Tag'>
print(type(a))
# 标签名: a
print("标签名:",a.name)
# 标签所有属性: {'href': 'http://www.baidu.com', 'target': '_blank', 'id': 'link1'}
print("标签所有属性:",a.attrs)
# 标签中的文本内容: 百度1
print("标签中的文本内容:",a.text)

3.4 爬取丁香园数据的小案例

'''
使用beautifulsoup爬取丁香园疫情数据
'''
import requests
from bs4 import BeautifulSoup
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')
data = response.content.decode()
# print(data)
# print('*')
soup = BeautifulSoup(data, 'lxml')
script = soup.find(id='getListByCountryTypeService2true')
text = script.string
print(text)

猜你喜欢

转载自blog.csdn.net/weixin_46841376/article/details/115422084
今日推荐