目录
基本知识
1.URL
URL全称为Uniform Resource Locator,即统一资源定位符,指定了我们要查找资源的地址。
组成:http(https)://主机名/文件路径/
2.HTTP协议
HyperText Transfer Protocol,简称http,超文本传输协议。
HTTP协议是互联网数据传输的一种规则,它规定了数据的传输方式。
HTTPS:HyperText Transfer Protocol Secure,超文本传输安全协议。
3.请求和相应
浏览器对服务器进行操作请求,服务器进行响应并且返回信息,浏览器接收到响应信息解析成网页展示出来
4.状态码
告知客户端的请求结果
1xx:告知请求的处理进度和情况
2xx:成功
3xx:表示需要进一步操作
4xx:客户端错误
5xx:服务器错误
实现简单的爬虫技术
1.安装requests模块
在终端中输入pip install requests
pip install requests -i https://pypi.mirrors.ustc.edu.cn/simple/
2.请求网页内容
import requests
url = "" # 找要的网站
response = requests.get(url) # 请求服务器并且获得响应消息
print(response)
3.获取状态码
import requests
url = ""
response = requests.get(url)
statusCode = response.status_code
print(statusCode)
也可以通过手动查看方法
右键——检查——刷新网页——找到Network——在下方name中滑至最上方——点击——点击Headers——找到Status Code
4.获取网页内容
import requests
url = ""
response = requests.get(url)
content = response.text
print(content)
可以得到HTML语言
全称为HyperText Markup Language,超文本标记语言,它用来定义网页内容和结构。
5.安装bs4,lxml模块
pip install bs4 -i https://mirrors.aliyun.com/pypi/simple/
pip install lxml -i https://mirrors.aliyun.com/pypi/simple/
6.导入BeautifulSoup并使用
import requests
from bs4 import BeautifulSoup
url = ""
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "lxml")
print(soup)
BeautifulSoup() 函数可以把不标准的 HTML 代码重新进行了自动更正,从而方便我们对其中的节点、标签、属性等进行操作。
BeautifulSoup(a, "b"):a:是需要解析的 HTML 文本。b:是解析器的类型。
最后一步得出来是规范过后的html语言
7.内容定位
定位你要的文字资源:
右键——检查——刷新网页——左上角有——点击需要的文字资源——找到在html语言中所在的节点中(<h> <p> <em>)
8.查询符合条件的节点
找到文字所在的节点中,通过find_all获取节点。
import requests
from bs4 import BeautifulSoup
url = ""
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "lxml")
JD = soup.find_all(name="")
print(JD)
得到的是一个列表
9.获取标签内容
我们可以调用 .string 属性 ,用来获取节点中的内容。
import requests
from bs4 import BeautifulSoup
url = ""
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "lxml")
content_all = soup.find_all(name="")
for content in content_all:
contentString = content.string
print(contentString)
即可得到节点中的文字内容
注意:
.string 属性只能提取单个节点或节点统一的内容。
在某些节点中可能又包含了子节点,此时会返回None值
为了获取全部文字内容我们进行修改
将.string改为.text
import requests
from bs4 import BeautifulSoup
url = ""
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "lxml")
content_all = soup.find_all(name="")
for content in content_all:
contentString = content.text
print(contentString)
10.应用
import requests
from bs4 import BeautifulSoup
url = "" # 输入网址
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "lxml")
content_all = soup.find_all(name="") # 找对应节点
for content in content_all:
contentString = content.text
print(contentString)