Python基于BeautifulSoup爬取京东商品信息

Python基于BeautifulSoup爬取京东商品信息

在本文中,我们将介绍如何使用Python和BeautifulSoup库爬取京东商品信息。我们将使用Python的requests库发送HTTP请求,然后使用BeautifulSoup库解析HTML响应。最后,我们将提取商品信息并将其保存到CSV文件中。

安装依赖库

在使用Python工具之前,我们需要先安装依赖库。可以使用pip命令在命令行安装以下两个库:

pip install requests
pip install beautifulsoup4

爬取京东商品信息

我们可以使用Python和BeautifulSoup库爬取京东商品信息。以下是示例代码:

import requests
from bs4 import BeautifulSoup
import csv

def get_jd_products(keyword):
    url = f"https://search.jd.com/Search?keyword={keyword}&enc=utf-8"

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

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, "html.parser")

    products = []
    for item in soup.find_all("li", class_="gl-item"):
        product = {}

        try:
            product["name"] = item.find("div", class_="p-name").find("em").text.strip()
            product["price"] = item.find("div", class_="p-price").find("i").text.strip()
            product["shop"] = item.find("div", class_="p-shop").find("a").text.strip()
            product["link"] = "https:" + item.find("div", class_="p-name").find("a")["href"]
        except:
            continue

        products.append(product)

    return products

def save_to_csv(products, filename):
    with open(filename, "w", encoding="utf-8", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=["name", "price", "shop", "link"])
        writer.writeheader()
        writer.writerows(products)

if __name__ == "__main__":
    products = get_jd_products("手机")
    save_to_csv(products, "jd_products.csv")

在这个示例中,我们首先导入了requests、BeautifulSoup和csv库。然后,我们定义了一个名为get_jd_products的函数,该函数接受一个关键字作为参数,并返回一个包含商品信息的列表。在函数中,我们首先构造了一个URL,该URL包含了我们要搜索的关键字。然后,我们定义了一个headers字典,该字典包含了我们的User-Agent信息。接着,我们使用requests库发送HTTP请求,并使用BeautifulSoup库解析HTML响应。然后,我们使用find_all方法查找所有class为“gl-item”的li标签,并使用try-except语句提取商品信息。最后,我们将商品信息添加到products列表中,并返回该列表。

接下来,我们定义了一个名为save_to_csv的函数,该函数接受一个包含商品信息的列表和一个文件名作为参数,并将商品信息保存到CSV文件中。在函数中,我们首先使用open函数创建一个CSV文件,并使用csv.DictWriter类创建一个写入器。然后,我们使用writeheader方法写入CSV文件的标题行,并使用writerows方法写入商品信息。

最后,在主程序中,我们调用get_jd_products函数获取商品信息,并将其保存到名为“jd_products.csv”的CSV文件中。

示例说明

以下是两个示例说明,用于演示“Python基于BeautifulSoup爬取京东商品信息”的完整攻略:

示例1:爬取单个关键字的商品信息

假设我们需要爬取关键字为“手机”的商品信息。以下是示例代码:

import requests
from bs4 import BeautifulSoup
import csv

def get_jd_products(keyword):
    url = f"https://search.jd.com/Search?keyword={keyword}&enc=utf-8"

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

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, "html.parser")

    products = []
    for item in soup.find_all("li", class_="gl-item"):
        product = {}

        try:
            product["name"] = item.find("div", class_="p-name").find("em").text.strip()
            product["price"] = item.find("div", class_="p-price").find("i").text.strip()
            product["shop"] = item.find("div", class_="p-shop").find("a").text.strip()
            product["link"] = "https:" + item.find("div", class_="p-name").find("a")["href"]
        except:
            continue

        products.append(product)

    return products

def save_to_csv(products, filename):
    with open(filename, "w", encoding="utf-8", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=["name", "price", "shop", "link"])
        writer.writeheader()
        writer.writerows(products)

if __name__ == "__main__":
    products = get_jd_products("手机")
    save_to_csv(products, "jd_products.csv")

在这个示例中,我们调用了get_jd_products函数,并将关键字“手机”作为参数传递给该函数。然后,我们将获取到的商品信息保存到名为“jd_products.csv”的CSV文件中。

示例2:爬取多个关键字的商品信息

假设我们需要爬取关键字为“手机”和“电脑”的商品信息。以下是示例代码:

import requests
from bs4 import BeautifulSoup
import csv

def get_jd_products(keyword):
    url = f"https://search.jd.com/Search?keyword={keyword}&enc=utf-8"

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

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, "html.parser")

    products = []
    for item in soup.find_all("li", class_="gl-item"):
        product = {}

        try:
            product["name"] = item.find("div", class_="p-name").find("em").text.strip()
            product["price"] = item.find("div", class_="p-price").find("i").text.strip()
            product["shop"] = item.find("div", class_="p-shop").find("a").text.strip()
            product["link"] = "https:" + item.find("div", class_="p-name").find("a")["href"]
        except:
            continue

        products.append(product)

    return products

def save_to_csv(products, filename):
    with open(filename, "w", encoding="utf-8", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=["name", "price", "shop", "link"])
        writer.writeheader()
        writer.writerows(products)

if __name__ == "__main__":
    products = []
    products += get_jd_products("手机")
    products += get_jd_products("电脑")
    save_to_csv(products, "jd_products.csv")

在这个示例中,我们首先定义了一个空列表products。然后,我们调用了两次get_jd_products函数,分别传递关键字“手机”和“电脑”作为参数。接着,我们将获取到的商品信息添加到products列表中,并将其保存到名为“jd_products.csv”的CSV文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基于BeautifulSoup爬取京东商品信息 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • wxPython定时器wx.Timer简单应用实例

    下面是详细的wxPython定时器wx.Timer简单应用实例攻略: 一、wxPython定时器wx.Timer简介 wxPython定时器wx.Timer是用于在指定时间间隔内执行操作的工具,常用于处理定时或周期性的任务。wx.Timer为我们提供了非常方便的方式去执行后台任务。 二、wxPython定时器wx.Timer的使用步骤 导入wxPython库…

    python 2023年6月2日
    00
  • python实现随机森林random forest的原理及方法

    简介: 随机森林(Random Forest)是一种集成学习(Ensemble Learning)方法,通过训练多个决策树,通过投票的方式来决定最终分类结果。它在机器学习中是一个非常常用的算法,尤其适用于分类问题。 下面是 Python 的实现随机森林的原理及方法的攻略: 随机森林的原理 随机森林的主要思想是,通过训练多个决策树来得到一个强大的集成学习模型。…

    python 2023年6月3日
    00
  • Python encode()方法和decode()方法详解

    下面是“Python encode()方法和decode()方法详解”的完整攻略。 1. encode()方法详解 1.1 什么是encode()方法 在 Python 中,字符串也是一个对象。字符串对象具有许多方法,其中一个方法是encode(),该方法用于将字符串编码成指定的编码格式。encode()方法的语法如下: string.encode(enco…

    python 2023年5月31日
    00
  • python+requests+pytest接口自动化的实现示例

    以下是关于“Python+requests+pytest接口自动化的实现示例”的完整攻略: Python+requests+pytest接口自动化的实现示例 在Python中,我们可以使用requests模块发送HTTP请求,使用pytest框架实现接口自动化测试。以下是Python+requests+pytest接口自动化的实现示例。 安装pytest 在…

    python 2023年5月15日
    00
  • Python实现登录人人网并抓取新鲜事的方法

    Python实现登录人人网并抓取新鲜事的方法可以分为以下几个步骤: 1.导入requests和BeautifulSoup模块 import requests from bs4 import BeautifulSoup 2.获取登录页面信息,分析登录页面的HTML结构并提取需要post的数据 login_url = ‘http://www.renren.com…

    python 2023年6月3日
    00
  • Python字典和集合讲解

    Python字典和集合讲解 什么是字典? 在Python中,字典(Dictionary)是一个非常重要的数据结构。字典是一种可以通过键(Key)来进行索引的数据结构。 字典由键值对(key-value pair)构成,每一个键都与一个值相对应。我们可以通过键来访问相应的值。 创建一个字典 我们可以使用{}或dict()来创建一个字典,例如: # 创建字典的两…

    python 2023年5月13日
    00
  • Python configparser模块应用过程解析

    Python configparser模块应用过程解析 简介 Python configparser模块是Python标准库中的模块之一,它可以用于读取、修改INI文件中的配置信息。INI文件是一种格式简单的配置文件格式,常用于存储应用程序、操作系统等的配置信息。 模块介绍 configparser模块包含三个类: ConfigParser:主要用于读取、修…

    python 2023年5月20日
    00
  • 基于Python实现下载网易音乐代码实例

    基于Python实现下载网易音乐代码实例 在本攻略中,我们将介绍如何使用Python下载网易音乐,并提供一些示例。 步骤1:获取音乐信息 在下载网易音乐之前,我们需要获取音乐信息。我们可以使用requests库获取网页内容,也可以使用其他库获取本地文件内容。 以下是一个示例,用于获取音乐信息: import requests import json # 获取…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部