捉虫放大镜

博客园 首页 新随笔 联系 订阅 管理

一、利用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)

 

posted on 2021-03-03 15:04  捉虫放大镜  阅读(220)  评论(0)    收藏  举报