selenium JD爬虫

python3.7+win10

# -*- coding: utf-8 -*-
# @Time : 2022/6/27 16:55
# @Author : 刘浪
# @File : JD_spider.py


import requests
from lxml import etree
import xlwt
from spider_seting import * #请求头模块
import time
from selenium import webdriver
import random


#禁用警告
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

class Excel:

    # 当前行数
    _current_row = 1

    # 初始化,创建文件及写入title
    def __init__(self, sheet_name='sheet1'):
        # 表头,放到数组中
        title_label = ['商品编号', '商品名称', '图片路径', '价格', '商家', '商品详情地址']
        self.write_work = xlwt.Workbook(encoding='ascii')
        self.write_sheet = self.write_work.add_sheet(sheet_name)
        for item in range(len(title_label)):
            self.write_sheet.write(0, item, label=title_label[item])

    # 写入内容
    def write_content(self, content):
        for item in range(len(content)):
            self.write_sheet.write(self._current_row, item, label=content[item])
        # 插入完一条记录后,换行
        self._current_row += 1
    # 保存文件
    def save_file(self, file_url='./dj_data.xls'):
        try:
            self.write_work.save(file_url)
            print("文件保存成功!文件路径为:" + file_url)
        except IOError:
            print("文件保存失败!")



def get_html(url):
        # 模拟浏览器访问
        chrome_driver_path = "C:/Users/Administrator/Desktop/TEM/chromedriver.exe"
        option = webdriver.ChromeOptions()
        option.binary_location = "G:/360browser/360Chrome/Chrome/Application/360chrome.exe"  # 这里是你指定浏览器的路径
        option.add_argument('--no-sandbox')
        #option.add_argument('--headless')#是否可视
        option.add_argument('--disable-gpu')
        option.add_experimental_option('excludeSwitches', ['enable-automation'])#不显示“正受到自动测试软件控制”
        browser = webdriver.Chrome(executable_path=chrome_driver_path, chrome_options=option)
        browser.get(url)
        time.sleep(random.randint(1, 2))
        #browser.maximize_window()#最大化显示
        browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")
        time.sleep(random.randint(1, 3))
        source = browser.page_source  # 获取该网页源码
        html = etree.HTML(source)  # 解析网页
        browser.quit()
        return html






def save_data(search_url):
    html = get_html(search_url)
    # 商品列表
    goods_list  = html.xpath(r'.//li[@class="gl-item"]')
    # 商品编号list
    serial_num_list = html.xpath(r"//li[@class='gl-item']/@data-sku")
    for li,serial_num in zip(goods_list,serial_num_list):  # 遍历父节点

        # 商品名称
        name ="".join(li.xpath(r"div/div[@class='p-name p-name-type-2']/a/em/text()"))
        # 图片路径
        img_url ="https:"+"".join(li.xpath(r'.//div/div/a/img/@src')) if  "".join(li.xpath(r'.//div/div/a/img/@data-lazy-img'))=="done" else  "https:"+"".join(li.xpath(r'.//div/div/a/img/@data-lazy-img'))
        # 价格
        price =  li.xpath(r".//div/div/strong/i/text()")
        # 商家
        shop = li.xpath(r".//div/span/a/text()")
        # 商品详情地址
        detail_addr = "https:"+"".join(li.xpath(r".//div/div[1]/a/@href"))
        goods = [serial_num, name, img_url, price, shop, detail_addr]
        excel.write_content(goods)

    # 保存文件,使用的是相对目录(也可以使用绝对路径),会保存在当前文件的同目录下。文件名为dj_data.xls,必须是.xls后缀
    excel.write_work.save("./dj_data.xls")



if __name__ == '__main__':
    # 创建文件
    excel = Excel()
    # 搜索关键字
    keyword =input("输入搜索的关键词=")
    for page in range(1,200,2):
        #搜索地址
        search_url= 'https://search.jd.com/Search?keyword=' + keyword + "&page="+str(page)+'&enc=utf-8'
        print(search_url)
        time.sleep(2)  #写入操作费时太快易报错
        save_data(search_url)







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于使用Selenium进行京东网站的爬虫,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Selenium库。您可以使用以下命令来安装: ``` pip install selenium ``` 2. 接下来,您需要下载对应的浏览器驱动。于京东网站,您可以选择Chrome浏览器驱动。请确保您下载了与您的浏览器版本相匹配的驱动。您可以从以下链接下载Chrome浏览器驱动: - Chrome驱动下载地址:https://sites.google.com/a/chromium.org/chromedriver/ 3. 下载完驱动后,将驱动程序放在合适的位置,并确保您可以在代码中正确引用它。 4. 接下来,您可以使用Selenium库编写Python代码来实现京东网站的爬虫。以下是一个示例代码,演示如何使用Selenium模拟浏览器行为来爬取京东商品信息: ```python from selenium import webdriver # 初始化Chrome浏览器驱动 driver = webdriver.Chrome('path_to_chromedriver') # 将 'path_to_chromedriver' 替换为您的驱动程序路径 # 打开京东网站 driver.get('https://www.jd.com') # 在搜索框中输入关键词并搜索 search_box = driver.find_element_by_id('key') search_box.send_keys('手机') # 将 '手机' 替换为您想要搜索的关键词 search_box.submit() # 获取搜索结果页面的商品信息 goods = driver.find_elements_by_class_name('gl-item') # 根据实际网页元素选择器修改 for good in goods: # 解析商品信息并进行相应的处理 # ... # 关闭浏览器 driver.quit() ``` 请注意,以上代码只是示例,并且仅完成了简单的搜索和获取商品信息的操作。根据您的具体需求,您可能需要进一步处理网页内容、翻页、登录等操作。 希望以上信息对您有所帮助!如有任何疑问,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值