Python学习记录-项目案例实现:爬虫篇 01

项目案例实现|Python爬虫 01:简易网页采集器

  • 项目来源
  • 项目需求
  • 具体分析
    • 1. 指定URL
    • 2. UA伪装
    • 3. 发送请求
    • 4. 获取响应结果
    • 5. 持久化存储
    • 6. 个性化需求
  • 项目代码
  • 运行结果
  • 检验
  • 注意事项

项目来源

本项目来源B站UP主路飞学城视频:视频链接点这里

项目需求

利用Python爬虫实现一个简易的网页采集器

具体分析

1. 指定URL

由于本例需要实现简易数据采集器,即实现网页数据采集功能,我们需要获取的是查询结果界面。
首先随意查询一个内容,获取其查询结果页面,此处以“腾讯”为例。

URL为https://www.baidu.com/s?ie=UTF-8&wd=%E8%85%BE%E8%AE%AF
再随机查询三个关键词,对应URL粘贴如下:

  1. https://www.baidu.com/s?ie=UTF-8&wd=%E7%BD%91%E6%98%93
  2. https://www.baidu.com/s?ie=UTF-8&wd=%E9%98%BF%E9%87%8C
  3. https://www.baidu.com/s?ie=UTF-8&wd=%E5%BE%AE%E4%BF%A1
    对比可发现规律:?后的部分为两个参数,ie表示编码格式,wd表示查询内容(这里出现乱码是因为使用了utf-8编码)。所以,查询界面的通用URL地址为https://www.baidu.com/s,?可加可不加。
    将此URL写入代码段,如下:
url = 'https://www.baidu.com/s'

2. UA伪装

UA伪装的对应反爬机制为UA检测,即网站会根据发送请求用户的User-Agent来判断是否为用户本人操作,如检测到为爬虫程序则不会返回响应数据。为了避免这一点,在发送请求之前需进行UA伪装。对应的User-Agent可在任意网页打开抓包工具查看,将UA值复制到代码段即可(不同操作系统,不同浏览器,UA值就不同)。

headers = {
     
	'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'
}

3. 发送请求

由于本例需求为整张页面的抓取,故使用get方法发送请求。

4. 获取响应结果

因为本例想获取的是整张页面的源码数据,故将响应结果以text形式保存。

response = requests.get(url=url, headers=headers)
page_text = response.text

5. 持久化存储

本例较为简单,故直接保存至同目录下的html文件中即可

with open('./result.html', 'w', encoding='utf-8') as fp:
	fp.write(page_text)

6. 个性化需求

让数据采集器能够动态采集,即模拟用户查询的真实情况,写一个input捕获用户输入

项目代码

整段代码如下

url = 'https://www.baidu.com/s'
    # 进行UA伪装
    header = {
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
    # 使输入动态化
    word = input('输入查询内容:')
    # 用字典封装
    param = {
     'wd': word}
    res = requests.get(url=url, params=param, headers=header)
    page_text = res.text
    filename = word + '.html'
    with open(filename, 'w', encoding='utf-8') as fp:
        fp.write(page_text)
    print('{}读取成功!'.format(filename))

运行结果

输入查询内容:人人网
人人网.html读取成功!

Python学习记录-项目案例实现:爬虫篇 01_第1张图片

检验

在浏览器中打开生成的html文件,与用户搜索得到的页面相对比,可以看出二者几乎完全一致,即本案例完成!

注意事项

  1. 在发送请求前需进行UA伪装,否则不会得到任何结果
  2. 若要进行动态输入,则需要传入参数,参数即为查询内容,参数要用字典封装
  3. 在发送请求之前要分析请求类型是get还是post

你可能感兴趣的:(python,web,爬虫)