一、利用request库访问网页
1.安装requests
sudo pip install requests
2.requests库get方法详解
requests.get方法是一种发起网络的请求方式,除了get之外,还有post,put,delete.head,options等。
(1)get方法中,主要的参数如下:
- url, 请求地址,必填项(重要)
- headers,请求头,非必填(重要)
- params,请求参数,非必填(重要)
- proxies,代理 IP,非必填
- verify,SSL 验证,非必填,主要用在访问 https 协议的网站
- timeout,延迟限制,非必填
- cookies,网页 cookies,非必填(重要)
最基本的请求代码如下:
# 导入库
import requests
url = "https://www.baidu.com/"
# 发送数据请求
res = requests.get(url)
print(res)
(2)get 核心参数 headers
headers为请求头,可以使爬虫抓取数据时和浏览器更加相似,首先在其中增加的是UA参数,全称:user-agent
# 导入模块
import requests
# 请求头设置
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36"
}
# 请求地址
url = "https://www.baidu.com"
# 发起请求,并返回数据
res = requests.get(url=url, headers=headers)
print(res)
除了UA参数,header还可以添加其他参数,例如Host,Referer,Accept等。具体可以参考访问url时实际参数
二、re模块和正则表达式(简单)
re模块的核心就是解析字符串,并获取字符串里面的局部内容
1. re.match方法:从字符串起始位置开始匹配
import re # 导入re模块
# re.match("要匹配的正则表达式","待匹配的字符串")
result1 = re.match("1", "123456")
result2 = re.match("2", "123456")
print(result1)
print(result2)
result1匹配成功,result2返回None
2. re.search方法
import re
# 声明待爬取的字符串
html = """
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>测试标题</title>
</head>
<body>
<h2>好好学习,天天向上</h2>
</body>
</html>
"""
# 通过 search 匹配数据
result = re.search("<title>(.*)</title>", html)
print(result)
print(result.group(1))
re.search方法第一个参数时正则表达时,第二个参数为待匹配的字符串。
result.group(1)表示获取正则表达式中第一个括号的内容
正则表达式以后单独列出来整齐
3.re.findall方法:匹配所有的数据
import requests
import re
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36"
}
url = "https://www.test.com/"
res = requests.get(url=url, headers=headers)
html_data = res.text
results = re.findall('<h6 title="(.*)" class="course-name"', html_data)
print(results)
浙公网安备 33010602011771号