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日

相关文章

  • Python语言基础之函数语法

    Python语言基础之函数语法 函数是一段可重复利用的代码,可以使代码更加简洁、易读和易维护。 定义函数 在Python中,我们可以使用def关键字来定义一个函数,具体语法如下: def 函数名(参数列表): 函数体 其中,参数列表可以有多个参数,也可以没有参数;函数体内是函数要执行的代码,可以有多行代码。 函数的定义可以放在程序的任意位置,比如,在脚本的开…

    python 2023年6月5日
    00
  • Python周期任务神器之Schedule模块使用详解

    Python周期任务神器之Schedule模块使用详解 简介 Schedule是一个Python的定时任务库,可用于周期性地运行函数。它包含了简单的API,使得我们可以编写出精确的任务调度程序。Schedule模块基于时间的概念,从而可以在指定的时间执行一些任务,例如:定时监测网站可用性、定时发送邮件、定时运行爬虫等等。 安装 pip install sch…

    python 2023年6月6日
    00
  • Python里字典的基本用法(包括嵌套字典)

    现在我将为你详细讲解Python中字典的基本用法,包括嵌套字典,以下是详细攻略。 字典的基本用法 字典(dictionary)是 python3 中的一个重要数据类型,在字典中,每个数据都是由一个键和对应的值所组成的键值对。 创建字典 我们可以使用一对大括号来创建一个空字典,也可以在大括号中使用键值对的形式来创建字典。 # 创建空字典 dict1 = {} …

    python 2023年5月13日
    00
  • python将多个py文件和其他文件打包为exe可执行文件

    要将多个.py文件和其他文件打包成可执行文件,可以使用pyinstaller这个工具。下面是使用pyinstaller打包exe的完整攻略: 1. 环境准备 1.1 安装pyinstaller 在命令行中执行以下命令安装pyinstaller: pip install pyinstaller 1.2 配置环境变量 将Python3安装目录的Scripts文件…

    python 2023年6月3日
    00
  • Python语言描述最大连续子序列和

    最大连续子序列和问题是一个经典的算法问题,其目标是在一个给定的整数序列中找到一个连续的子序列,使得该子序列的和最大。本文将介绍如何使用Python语言描述最大连续子序列和问题的完整攻略,包括暴力解法和动态规划解法。 暴力解法 暴力解法是最简单的解法,其思路是枚举所有可能的子序列,并计算它们的和,最后返回最大的和。以下是示例代码: def max_subarr…

    python 2023年5月13日
    00
  • 详解Python PIL ImageDraw.Draw.ellipse()

    Python PIL(Python Imaging Library)是Python的图像处理库,提供了众多的图像处理功能,其中包括绘制圆形的功能。PIL提供了一个可以在图像上绘制各种几何图形的模块,名字叫做ImageDraw。在ImageDraw模块中,有一个方法可以绘制圆形,即Draw.ellipse()方法。 方法格式 绘制圆形的方法格式如下: Draw…

    python-answer 2023年3月25日
    00
  • 用python爬取租房网站信息的代码

    需要爬取的租房网站信息通常是居民租房信息或酒店预订信息。在本攻略中,我们将一步步介绍如何用 Python 抓取一个租房子网站的信息。 第一步:确定网页 URL 确定需要爬取的租房网站信息的 URL 是爬取信息的第一步。一般情况下,需要爬取的租房子网站信息 URL 是一个包含租房房源信息的列表。 例如,我们将使用 58同城房源信息 作为本次示例。该网站的 UR…

    python 2023年5月14日
    00
  • Python使用asyncio异步时的常见问题总结

    以下是“Python使用asyncio异步时的常见问题总结”的完整攻略,其中包括了asyncio异步编程的常见问题及解决方法,以及两个示例说明。 Python使用asyncio异步时的常见问题总结 在使用asyncio异步编程时,我们可能会遇到一些常见问题。以下是一些常见问题及解方法: 1. 协程阻塞 在使用asyncio异步编程时,我们可能会遇到协程阻塞的…

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