该程序为入门级爬虫,巩固urllib库的基本使用
实现步骤
- 发送一个请求
- 分析获取请求的url地址,参数
- 处理参数并发送请求,获取响应
- 把得到的响应保存文件
需求:爬虫实现百度搜索并保存搜索后的网页源代码(第一页)
环境:Python 3.6
使用的库:urllib
使用的工具:Chrome,Pycharm
具体实现步骤如下
首先,导包
导入后续需要使用到的模块
import urllib.request
import urllib.parse
1.使用百度搜索任意内容
使用百度搜索得到了发送请求的url地址(这里搜索的是“苹果”)
url = 'https://www.baidu.com/s?' # ?后面还有需要添加的参数
2.分析请求的url地址
简单地分析这个url地址后,获取需要用到的参数:ie=utf-8,wd=“搜索的内容”
target = input('请输入需要搜索的内容:') # 定义一个变量获取输入
data = {
'ie': 'utf-8', # 这个参数经过测试可有可无,保险起见还是加上
'wd': target, # 想要搜索的内容
}
3.处理参数并发送请求
# 对参数进行编码
data = urllib.parse.urlencode(data)
# 合并url
url = url + data
# 构造请求对象
request = urllib.request.Request(url, headers=headers)
# 发送请求
response = urllib.request.urlopen(request)
4.保存网页源代码
# 使用'wb'方式保存
with open('./result.html', 'wb') as fp:
fp.write(response.read())
# 如果仅使用'w'方式保存,需要进行解码处理:
# fp.write(response.read().decode())
最后附上程序源代码
import urllib.request
import urllib.parse
# 准备需要发送请求的url
url = 'https://www.baidu.com/s?'
# 准备请求头
headers = {
'User-Agent': 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR 3.5.30729)',
}
# 键盘读取需要搜索的内容
target = input('请输入需要搜索的内容:')
# url上的一些参数
data = {
'ie': 'utf-8',
'wd': target,
}
# 对参数进行编码
data = urllib.parse.urlencode(data)
# 合并url
url = url + data
# 构造请求对象
request = urllib.request.Request(url, headers=headers)
# 发送请求
response = urllib.request.urlopen(request)
# 保存文件
with open('./result.html', 'wb') as fp:
fp.write(response.read())