python+selenium 亚马逊商品信息采集

本文介绍了如何使用Selenium进行网页抓取,通过实例演示如何定位元素、模拟用户行为并处理动态内容,适用于Python开发者处理亚马逊商品信息的爬虫案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小编最近因为要爬取该网站,发现之前的代码用不了!

  • 所以有了这编文章,原因是因为用requets获取的源码与网页显示不一样,只能逼着我使用selenium,通过本编文章给大家讲解一下selenium基本场景运用。
    1. 照常,打开F12分析网页,获取xpath,这里提醒一下大家,最好是通过右键查看源代码来获取,检查与我们实际得到的代码还是有些不一致的!
    • 废话少说,直接上代码
from selenium import webdriver
from lxml import etree
from selenium.webdriver.common.by import By  # 按照什么方式查找,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys  # 键盘按键操作
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait  # 等待页面加载某些元素
import csv
import time
all_list = []
class Amazon(object):
    def __init__(self):
        self.url = 'https://www.amazon.com/s?k=%E7%A7%AF%E6%9C%A8&ref=nb_sb_noss'
        self.browser = webdriver.Chrome()

    def __del__(self):
        self.browser.close()

    def get_html(self):
        time.sleep(3)
        text = self.browser.page_source
        html = etree.HTML(text)

        next_url = WebDriverWait(self.browser, 10).until(EC.presence_of_element_located((By.XPATH,'//li[@class="a-last"]')))
        is_next = next_url.get_attribute('xh-highlight')
        urls = html.xpath('//a[@class="a-link-normal s-no-outline"]/@href')
        title = html.xpath('//span[@class="a-size-base-plus a-color-base a-text-normal"]/text()')
        pinfen = html.xpath('//span[@class="a-icon-alt"]/text()')
        rating_value = html.xpath('//span[@class="a-size-base"]/text()')
        prcie = html.xpath('//span[@class="a-offscreen"]/text()')
        for i in range(0,len(urls)):
            try:
                print(title[i], pinfen[i], rating_value[i], urls[i],prcie[i])
                list = [title[i], pinfen[i], rating_value[i], urls[i],prcie[i]]
                all_list.append(list)
            except Exception as e:
                pass
        # 使用csv存储数据
        headers = ["标题",'评分','评论数','链接','价格']
        with open('amazon.csv', 'w', newline='', encoding='utf-8')as f:
            f_csv = csv.writer(f)
            f_csv.writerow(headers)
            f_csv.writerows(all_list)

        return next_url,is_next

    def main(self):
        time.sleep(2)
        self.browser.get(self.url)
        while 1:
            next_url,is_next = self.get_html()
            if is_next is None:
                break
            next_url.click()


if __name__ == '__main__':
    amazon_spider = Amazon()
    amazon_spider.main()

本文章若对你有帮助,烦请点赞,收藏,关注支持一下!
各位的支持和认可就是我最大的动力!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值