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

yizhihongxing

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日

相关文章

  • python读取csv文件指定行的2种方法详解

    针对“python读取csv文件指定行的2种方法详解”这个主题,我将为您提供一个完整的攻略。 1. CSV文件及其读取 1.1 CSV概述 CSV(Comma-Separated values)是一种简单常用的文件格式,以逗号作为字段之间的分隔符,用于存储表格数据。它的优点在于易于读写和处理,可以用文本编辑器或电子表格程序直接打开和编辑,而且不需要额外的数据…

    python 2023年6月3日
    00
  • Python源码解析之List

    Python中的列表(List)是一种常用的数据类型,可以存储多个元素。本文将详细讲解Python中列表的源码实现,包括列表的内部结构、列表的创建、添加元素、删除元素、修改、切片操作等,并提供两个实例说明。 列表的内部结构 Python中的列表是一种动态数组,它的内部结构由以下三个部分组成: 指向列表元素的指针数组 列表长度 列表的容量 指向列表元素的指针数…

    python 2023年5月13日
    00
  • 详解Windows下PyCharm安装Numpy包及无法安装问题解决方案

    详解Windows下PyCharm安装Numpy包及无法安装问题解决方案 介绍 在使用Python开发过程中,Numpy作为一个重要的科学计算库不可或缺。然而,在安装Numpy的过程中,有时会遇到各种问题,导致无法成功安装。本文将针对Windows下使用PyCharm的情况,详细讲解Numpy包的安装及解决无法安装的问题。 安装步骤 1. 配置pip源 使用…

    python 2023年5月13日
    00
  • 一文详解Python定时任务触发

    一文详解Python定时任务触发 概述 定时任务,顾名思义就是在指定的时间点或时间间隔内执行一些任务。在Python中,我们可以使用多种方式来实现定时任务触发。本文将详细介绍Python中两种常用的定时任务触发机制:time.sleep()和sched模块,以及其用法。 time.sleep()实现定时任务 time.sleep()方法可以让程序暂停指定的时…

    python 2023年5月19日
    00
  • python 中 os.walk() 函数详解

    当我们需要遍历某个目录及其子目录下的所有文件和目录时,可以使用 Python 的 os.walk() 函数。这个函数返回一个生成器,该生成器递归地遍历一个目录及其子目录中的所有文件和目录。下面是一个详细的攻略来讲解如何使用 os.walk() 函数。 函数定义 以下是 os.walk() 函数的定义: os.walk(top, topdown=True, o…

    python 2023年6月2日
    00
  • python脚本之一键移动自定格式文件方法实例

    下面我将详细讲解“Python脚本之一键移动自定格式文件方法实例”的完整攻略。 1.前言 在日常工作中,我们经常需要针对不同的文件类型,编写不同的代码进行复制、转移等操作。这时,如果能够通过一种统一的方式进行处理,那么就可以大大提高效率。本文就是介绍了一种Python脚本,可以用来统一处理各种文件格式的移动操作。 2.环境准备 在使用本文中的Python脚本…

    python 2023年6月2日
    00
  • 详解Python中的各种转义符\n\r\t

    以下是详细讲解“详解Python中的各种转义符\n\r\t”的完整攻略。 转义符的介绍 在Python中,转符是一种特殊的字符,用于表示一些特殊字符或者控制字符。Python中常用的转义符包括\n、\r、\t等。 \n:表示换符,用于在字符串中换行。 \r:表示回车符,用于将光标移到行首。 \t:表示制表符,用于在字符串中添加制表符。 转义符的使用 在Pyt…

    python 2023年5月14日
    00
  • python中的hashlib和base64加密模块使用实例

    完整攻略:Python中的hashlib和base64加密模块使用实例 简介 在现代网络应用中,数据的安全性越来越受到关注。对于敏感数据的传输和存储,必须使用加密算法来保证数据的安全性。Python内置了两个加密模块:hashlib和base64。 hashlib模块 介绍 hashlib模块提供了许多用于加密的算法,如MD5、SHA1、SHA256等。这些…

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