selenuim+京东

一、步骤
第一步:设置input,要搜索的关键字
第二步,利用selenuim设置打开浏览器
第三步:声明一个list,存储dict
第五步:定义爬虫函数
a. 请求url :browser.get(url)
b.获取输入框的id,并输入关键字 :browser.find_element_by_id(‘xxx’).send_keys(key_word)
c.输入回车进行搜索: browser.find_element_by_id(‘xxx’).send_keys(Keys.ENTER)
d.显示等待下一页的元素加载完成
e.先获取一个有多少页,设置一个计数器,用于循环while true
f. 无限循环
count += 1
显示等待商品信息加载完成
将滚动条拉到最下面的位置,因为往下拉才能将这一页的商品信息全部加载出来
browser.execute_script(‘document.documentElement.scrollTop=10000’)
随机延迟,等下元素全部刷新
time.sleep(random.randint(1, 3))
browser.execute_script(‘document.documentElement.scrollTop=0’)

    开始提取信息,找到ul标签下的全部li标签
    遍历
        获取信息
        声明一个字典存储数据
如果count==all_page就退出循环
if count == all_page:
    break
找到下一页的元素pn-next
fp_next = browser.find_element_by_css_selector('xxx')
点击下一页
fp_next.click()

定义一个函数main,保存数据

二、代码

第一步:设置input,要搜索的关键字
第二步,利用selenuim设置打开浏览器
第三步:声明一个list,存储dict
第五步:定义爬虫函数
    a. 请求url :browser.get(url)
    b.获取输入框的id,并输入关键字 :browser.find_element_by_id('xxx').send_keys(key_word)
    c.输入回车进行搜索: browser.find_element_by_id('xxx').send_keys(Keys.ENTER)
    d.显示等待下一页的元素加载完成
    e.先获取一个有多少页,设置一个计数器,用于循环while true
    f. 无限循环
        count += 1
        显示等待商品信息加载完成
        将滚动条拉到最下面的位置,因为往下拉才能将这一页的商品信息全部加载出来
        browser.execute_script('document.documentElement.scrollTop=10000')
        随机延迟,等下元素全部刷新
        time.sleep(random.randint(1, 3))
        browser.execute_script('document.documentElement.scrollTop=0')

        开始提取信息,找到ul标签下的全部li标签
        遍历
            获取信息
            声明一个字典存储数据
    如果count==all_page就退出循环
    if count == all_page:
        break
    找到下一页的元素pn-next
    fp_next = browser.find_element_by_css_selector('xxx')
    点击下一页
    fp_next.click()

定义一个函数main,保存数据

全部代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import json
import csv
import random

key_word = input('请输入爬取商品信息:').strip()#比如ipad
# 声明一个谷歌驱动器,并设置不加载图片,间接加快访问速度
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'profile.managed_default_content_settings.images': 2})
browser = webdriver.Chrome(options=options)
#隐式等待  wait = browser.implicitly_wait(10)
#显示等待
wait =WebDriverWait(browser, 10)
# url
url = 'https://www.jd.com/'
# 声明一个list,存储dict
data_list = []


def start_spider():

    # 请求url
    browser.get(url)
    # 获取输入框的id,并输入关键字python爬虫
    browser.find_element_by_id('key').send_keys(key_word)
    # 输入回车进行搜索
    browser.find_element_by_id('key').send_keys(Keys.ENTER)
    # 显示等待下一页的元素加载完成
    wait.until(
        EC.presence_of_all_elements_located(
            (By.CLASS_NAME, 'pn-next')
        )
    )
    # 先获取一个有多少页
    all_page = eval(browser.find_element_by_css_selector('span.p-skip em b').text)
    # 设置一个计数器
    count = 0
    # 无限循环
    while True:
        try:
            count += 1
            # 显示等待商品信息加载完成
            wait.until(
                EC.presence_of_all_elements_located(
                    (By.CLASS_NAME, 'gl-item')
                )
            )
            # 将滚动条拉到最下面的位置,因为往下拉才能将这一页的商品信息全部加载出来
            browser.execute_script('document.documentElement.scrollTop=10000')
            # 随机延迟,等下元素全部刷新
            time.sleep(random.randint(1, 3))
            browser.execute_script('document.documentElement.scrollTop=0')

            # 开始提取信息,找到ul标签下的全部li标签
            lis = browser.find_elements_by_class_name('gl-item')
            # 遍历
            for li in lis:
                # 名字
                name = li.find_element_by_xpath('.//div[@class="p-name p-name-type-2"]//em').text
                # 价格
                price = li.find_element_by_xpath('.//div[@class="p-price"]//i').text
                # 评论数
                comment = li.find_elements_by_xpath('.//div[@class="p-commit"]//a')
                if comment:
                    comment = comment[0].text
                else:
                    comment = None
                # 商铺名字
                shop_name = li.find_elements_by_class_name('J_im_icon')
                if shop_name:
                    shop_name = shop_name[0].text
                else:
                    shop_name = None
                # 商家类型
                shop_type = li.find_elements_by_class_name('goods-icons')
                if shop_type:
                    shop_type = shop_type[0].text
                else:
                    shop_type = None

                # 声明一个字典存储数据
                data_dict = {}
                data_dict['name'] = name
                data_dict['price'] = price
                data_dict['comment'] = comment
                data_dict['shop_name'] = shop_name
                data_dict['shop_type'] = shop_type

                data_list.append(data_dict)
                print(data_dict)
        except Exception as e:
            continue

        # 如果count==all_page就退出循环
        if count == all_page:
            break
        # 找到下一页的元素pn-next
        fp_next = browser.find_element_by_css_selector('a.fp-next')
        # 点击下一页
        fp_next.click()


def main():

    start_spider()
    # 将数据写入jsonwenj
    with open('data_json.json', 'a+', encoding='utf-8') as f:
        json.dump(data_list, f, ensure_ascii=False, indent=4)
    print('json文件写入完成')

    with open('data_csv.csv', 'w', encoding='utf-8', newline='') as f:
        # 表头
        title = data_list[0].keys()
        # 声明writer
        writer = csv.DictWriter(f, title)
        # 写入表头
        writer.writeheader()
        # 批量写入数据
        writer.writerows(data_list)
    print('csv文件写入完成')


if __name__ == '__main__':

    main()
    # 退出浏览器
    browser.quit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要使用Selenium登录京东,您需要进行以下步骤: 1. 首先,确保您已经安装了Selenium库。您可以使用pip命令来安装它: ``` pip install selenium ``` 2. 接下来,您需要下载对应浏览器的驱动程序。京东通常使用Chrome浏览器,因此您可以下载Chrome浏览器的驱动程序。您可以在这里下载:https://sites.google.com/a/chromium.org/chromedriver/downloads 3. 下载完驱动程序后,将其解压缩并将可执行文件的路径保存下来。 4. 开始编写Python脚本。以下是一个示例代码,用于使用Selenium登录京东: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys # 设置驱动程序的路径 driver_path = '驱动程序的路径' # 创建一个Chrome浏览器实例 driver = webdriver.Chrome(executable_path=driver_path) # 打开京东登录页面 driver.get('https://passport.jd.com/new/login.aspx') # 找到用户名和密码的输入框,并输入您的登录信息 username_input = driver.find_element_by_id('loginname') username_input.send_keys('您的用户名') password_input = driver.find_element_by_id('nloginpwd') password_input.send_keys('您的密码') # 模拟点击登录按钮 login_button = driver.find_element_by_class_name('login-btn') login_button.click() # 登录成功后,可以进行其他操作 # 关闭浏览器 driver.quit() ``` 请注意,上述代码中的“驱动程序的路径”需要替换为您实际下载的驱动程序的路径。另外,您还需要将“您的用户名”和“您的密码”替换为您自己的京东登录凭据。 希望这能帮到您!如果您有任何其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值