文章更新于: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

最低0.47元/天 解锁文章
708

被折叠的 条评论
为什么被折叠?



