爬取京东商品(js)

from selenium import webdriver
import csv
import time

# 1. 接收要搜索的商品类型,打开商品搜索页面
pro = input("请输入商品名称:")
driver = webdriver.Chrome()
driver.get("https://www.jd.com/")

# 发送文字到搜索框,点击搜索按钮
driver.find_element_by_class_name("text")\
                           .send_keys(pro)
driver.find_element_by_class_name("button")\
                           .click()
time.sleep(0.5)
i = 1

# 3. xpath匹配所有商品节点,筛选内容
while True:
    # 2. 执行JS脚本,把下拉菜单拉到最底部
    driver.execute_script(
    'window.scrollTo(0,document.body.scrollHeight)')
    time.sleep(1)
    
    r_list = driver.find_elements_by_xpath('//div[@id="J_goodsList"]//li')
    #print(r_list[5].text)
    for onePro in r_list:
        m = onePro.text.split('\n')
        # m : ["¥98.5","名称","9条评价",...]
        price = m[0]
        name = m[1]
        commit = m[2]
        market = m[3]
        L = [name,price,commit,market]
        with open("商品.csv","a",newline="",encoding="gb18030")as f:
            writer = csv.writer(f)
      
### 实现Python爬虫抓取京东商品数据 要使用Python编写爬虫程序来抓取京东商品的数据,可以采用多种技术和工具组合完成此任务。以下是详细的说明: #### 工具和技术选型 常用的工具有以下几个选项[^1]: - **Python**: 数据科学领域广泛使用的编程语言。 - **Requests**: 发送HTTP请求的核心库,适合简单的网页抓取需求。 - **BeautifulSoup** 或者 **lxml**: 解析HTML/XML文档,提取结构化数据。 - **Scrapy**: 高级爬虫框架,适用于复杂的爬虫项目。 - **Selenium**: 自动化浏览器操作的工具,特别适合动态加载页面的内容。 对于静态页面,可以直接利用 `requests` 和 `BeautifulSoup` 来解析;而对于动态加载的商品信息,则可能需要用到 `Selenium` 进行模拟交互[^3]。 #### 技术实现流程 下面是一个基于 `requests` 和 `BeautifulSoup` 的简单示例代码,用于抓取京东商品的部分基本信息: ```python import requests from bs4 import BeautifulSoup def fetch_jd_product(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') product_name = soup.find('div', {'class': 'sku-name'}).get_text(strip=True)[^1] price_info = soup.find('span', {'class': 'price J-p-XXXXXX'})['data-price'][^1] return {"name": product_name, "price": price_info} url = "https://item.jd.com/your-product-id.html" product_data = fetch_jd_product(url) print(product_data) ``` 注意:实际应用中需要替换掉 URL 中的具体产品 ID (`your-product-id`) 并调整相应的 CSS Selectors[^4]。 如果遇到反爬机制或者更复杂的情况(比如 AJAX 动态加载),则推荐引入 Selenium 处理 JavaScript 渲染后的 DOM 结构[^3]: ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from selenium.webdriver.common.by import By from time import sleep service = ChromeService(executable_path='/path/to/chromedriver') driver = webdriver.Chrome(service=service) try: driver.get("https://www.jd.com/") sleep(3) # 等待页面完全渲染 search_box = driver.find_element(By.ID, 'key') search_box.send_keys('笔记本电脑') button_submit = driver.find_element(By.CSS_SELECTOR,'button.button') button_submit.click() sleep(5) finally: driver.quit() ``` 以上代码片段展示了如何启动 WebDriver 浏览器驱动、输入关键词以及提交表单的操作过程[^3]。 #### 注意事项 在构建任何网络爬虫之前,请务必阅读目标网站的服务条款(TOS),确保活动符合法律规范和道德标准。此外,频繁访问服务器可能会引起对方封锁 IP 地址等问题,在设计时考虑加入随机延时等功能降低影响频率[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值