正则表达式翻页爬取糗事百科

本文主要通过requests模块请求网页,应用正则表达式来解析数据保存糗事百科的图片,同时还能完成分页功能。

一.requests模块的具体使用可以参照这篇文章

二.正则表达式我之前也发过,链接如下:正则表达式

接下来进入写代码环节:
开始,我们导入模块

import re
import requests
import os

创建文件夹,便于保存二进制图片

if not os.path.exists('./糗事百科'):
    os.mkdir('./糗事百科/')

添加请求头(用来伪装你是浏览器向服务器发送请求)。

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240"
}

因为这里是我自己的请求头,为了隐私,就不写完了。
在这里插入图片描述
我们点击下一页发现只是page后面的参数发生了变化,由1变为了2,由此可以找到他的规律,就可以用for循环对他进行翻页。
我们鼠标选中图片,右击检查,发现src属性是图片网址的一部分,我们通过正则表达式解析,然后对其拼接网址就好了
正则表达式:

ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>' 

在这里插入图片描述
下面是翻页和解析网页的源代码

for i in range(1, 6):
    new_url = format(url % i)
    # print(new_url)
    response_text = requests.get(url=url, headers=headers).text
    # 通过正则表达式匹配图片的url
    img_src_list = re.findall(ex, response_text, re.S)
    for img_src in img_src_list:
        img_url = "https:" + img_src
        file_name = img_src.split('/')[-1]  # 命名文件名
        img_respons_content = requests.get(url=img_url, headers=headers).content

最后保存图片

        with open('./糗事百科/{}'.format(file_name), 'wb') as f:
            f.write(img_respons_content)
            print(file_name+"保存成功!!")

在这里插入图片描述
完整代码如下

# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# @Time      :  2020-12-29 17:17
# @author    :  jianwei
# @Software  :  PyCharm

import re
import requests
import os

if not os.path.exists('./糗事百科'):
    os.mkdir('./糗事百科/')
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0(请求头不方便透露)"
}
url = 'https://www.qiushibaike.com/imgrank/page/%d/'
ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>'  # 正则表达式
# 翻页
for i in range(1, 6):
    new_url = format(url % i)
    # print(new_url)
    response_text = requests.get(url=url, headers=headers).text
    # 通过正则表达式匹配图片的url
    img_src_list = re.findall(ex, response_text, re.S)
    for img_src in img_src_list:
        img_url = "https:" + img_src
        file_name = img_src.split('/')[-1]  # 命名文件名
        img_respons_content = requests.get(url=img_url, headers=headers).content
        # 保存图片
        with open('./糗事百科/{}'.format(file_name), 'wb') as f:
            f.write(img_respons_content)
            print(file_name+"保存成功!!")


感谢你们的支持与订阅!!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值