python 爬虫案例:爬取百度贴吧图片

文章更新于:2020-04-24
注1:打包后的程序(无需python环境)下载参见:https://ww.lanzous.com/ibvwref
注2:更多爬虫案例参见:https://github.com/amnotgcs/SpiderCase

一、分析

1.1、程序流程分析

1、从用户接收一个字符串
2、判断是否存在该贴吧
3、如果存在解析总页数,并接收两个数字作为提取图片的页数
4、循环保存图片

1.2、技术分析

1、贴吧超链接为 https://tieba.baidu.com/f?ie=utf-8&kw=关键字&pn=页数x50
2、所以我们从用户接收关键字、页数即可。
3、进入贴吧后,我们可以查看源码发现每页有 50 个帖子,超连接为 https://tieba.baidu.com/p/页面ID
4、所以我们从当前页面检索出所有的页面 ID ,然后自己构造 URL 进行访问即可。
5、进入帖子页面后,我们可以发现图片的超连接都在 BDE_Image 类的 a 标签里面

6、所以我们直接提取这个 a 标签的 href 属性使用 urllib.request.urlretrieve 进行保存即可。
7、其他细节根据需要进行完善。

二、源代码

import requests
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
from os import mkdir

def setKeyword():
    # 构造带参 URL
    url_prefix = "https://tieba.baidu.com/f?"

    # 确定是否存在该吧
    print("\n\n\t\t欢迎使用百度贴吧图片检索程序 v1.0")
    print("\n\n\t\t程序更新于:2020-04-24 by amnotgcs")
    keyword = input("\n\n\t\t请输入你要检索的贴吧名:")
    url = "%sid=utf-8&kw=%s"%(url_prefix, urllib.parse.quote(keyword))
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    confirmName = soup.find('a', class_ = 'card_title_fname')
    if confirmName:
        # 输出贴吧名
        print("\t\t已匹配:",confirmName.string.strip())
    else:
        print("\t\t该吧不存在")
        retur
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>