用selenium爬京东商城的商品信息(selenium的学习强化)

使用selenium爬取京东商城ipad商品信息时遇到超时问题,通过增加显式等待和调整网络策略,成功抓取每页30至60个商品。采用Pycharm、selenium和webdriver作为工具,解析html并利用正则表达式过滤无关内容。尽管增加等待时间可解决部分超时,但仍有节点加载不稳定。考虑改进元素定位策略以提高稳定性。
摘要由CSDN通过智能技术生成

【项目介绍】

之前用selenium爬当当网的信息,已经基本掌握一些selenium的用法,这次尝试用同样的方法爬京东商城,过程中出现很多问题:比如总是超时(特别是查找按钮节点element_to_be_clickable和对比文本节点text_to_be_present_in_element),比如商品信息有60个但只能加载到30个……借鉴网上的做法完成了项目,但是对于一些节点总是超时还是不能理解,猜测可能是网络的问题……

【项目工具】

Pycharm+selenium+webdriver

【项目流程】

1.访问京东商城,模拟输入ipad并点击搜索
在这里插入图片描述
2.进入ipad商品搜索页第一页,添加显式等待,等待当前页数和商品信息均加载出来。
在这里插入图片描述
3.获取html并利用正则表达式匹配商品信息,这里用sub方法多次匹配从而删减无关html节点。
4.执行循环,模拟点击下一页。
在这里插入图片描述
5.执行等待,等待包括三十个商品的等待和六十个商品的等待,以保证商品信息均能加载出来。加载成功则继续执行第三步。

附完整代码:

'''
项目介绍:爬京东网站商品信息。

'''
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re,time,random
from selenium.common.exceptions import TimeoutException

def index_page(page):
    print('现在加载第{}页'.format(page))
    try:
        
        #模拟拖动下滑条,拖至底部。               
        browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
        time.sleep(random.randint(1,3))
        #input_button = wait.until(EC.presence_of_element_located((By.CLASS_NAME,'input-txt')))
        submit_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_bottomPage > span.p-num > a.pn-next > em')))
        #为什么就是超时呢??
        #submit_button = browser.find_element_by_class_name('btn.btn-default')
        #submit_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'a.btn.btn-default')))
        #input_button.clear()
        #input_button.send_keys(page)
        submit_button.click()
        #以下为网页加载的等待条件,>代表的是直接子节点
        wait.until(
            EC.presence_of_all_elements_located((By.CSS_SELECTOR,'#J_goodsList > ul > li:nth-child(30)')))
        browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
        wait.until(
            EC.presence_of_all_elements_located((By.CSS_SELECTOR, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值