欢迎访问宙启技术站
智能推送

python2如何爬取百度贴吧指定关键字和图片

发布时间:2023-05-15 08:07:02

在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中爬取百度贴吧指定关键字和图片的功能。您可以根据需要调整参数,如搜索的关键字、要爬取的页数和保存图片的文件夹路径等。