python2如何爬取百度贴吧指定关键字和图片
在Python2中,我们可以使用requests和BeautifulSoup库来爬取百度贴吧的帖子和图片。我将在以下内容中展示如何使用这两个库来实现:
1. 导入库和设置参数
首先,我们需要导入requests和BeautifulSoup库。我们还需要定义一些参数,如要搜索的关键字和要爬取的页数等。
import requests
from bs4 import BeautifulSoup
keyword = "python" # 要搜索的关键字
page_num = 10 # 要爬取的页数
output_folder = "./output/" # 保存图片的文件夹路径
2. 获取帖子链接
接下来,我们需要获取每个帖子的链接。我们可以使用requests库向百度贴吧发送GET请求,并使用BeautifulSoup解析HTML页面。我们可以在页面中找到所有帖子的链接,然后将它们存储在一个列表中。我们可以通过循环遍历所有页面来获取所有链接。
post_links = [] # 存储所有帖子链接的列表
for i in range(page_num):
# 构造URL,并发送GET请求
url = "https://tieba.baidu.com/f?kw=" + keyword + "&ie=utf-8&pn=" + str(i*50)
response = requests.get(url)
# 解析HTML页面,找到所有帖子链接
soup = BeautifulSoup(response.content, "html.parser")
links = soup.select(".j_th_tit > a")
for link in links:
post_links.append(link["href"])
3. 获取图片链接
接下来,我们需要获取每个帖子中的图片链接。我们可以遍历每个帖子链接,在页面中找到所有图片链接,并将它们存储在一个列表中。
image_links = [] # 存储所有图片链接的列表
for link in post_links:
# 发送GET请求,并解析HTML页面
response = requests.get(link)
soup = BeautifulSoup(response.content, "html.parser")
# 找到帖子中的所有图片链接
links = soup.select(".BDE_Image")
for link in links:
image_links.append(link["src"])
4. 下载图片
最后,我们需要将获取到的所有图片保存到本地。我们可以使用requests库向图片链接发送GET请求,并将响应中的二进制数据保存到本地文件。
for i, link in enumerate(image_links):
# 发送GET请求,并保存响应的二进制数据到本地文件
response = requests.get(link)
with open(output_folder + str(i) + ".jpg", "wb") as f:
f.write(response.content)
至此,我们已经实现了在Python2中爬取百度贴吧指定关键字和图片的功能。您可以根据需要调整参数,如搜索的关键字、要爬取的页数和保存图片的文件夹路径等。
