selenium--爬虫爬取京东商城商品信息

selenium--爬虫爬取京东商城商品信息

说明

看完用selenium爬取淘宝商品信息的网课,于是乎想着自己也整一个selenium程序来爬取京东以作巩固。写了几个小时的代码,通过不断调试,学到了很多细节上的处理,完整代码在下方,使用时修改搜索的参数就可以开始爬取了,事先要安装goole chrome的驱动。最终爬取的结果存储在了products数组中,需要添加其他处理时,直接在程序最后使用数组来调用爬取的结果。运行结果不展示了,就是把信息输出出来,因为要等待网页加载,所以运行时间有点久。

完整代码

from selenium import webdriver
import time

def Search_Product(key):     #向搜索框输入内容    
    driver.find_element_by_id('key').send_keys(key)

def Click_Search():        #搜索按钮    
    driver.find_element_by_class_name('button').click()

def PageNum():         #获取总的页数    
    pagenum=driver.find_element_by_class_name('p-skip').text    
    return pagenum[1:-10]

def Page_Next():      #下一页    
    page=driver.find_element_by_class_name('pn-next')    
    page.click()    
    
if __name__=='__main__':    
    products=[]    
    count=0    
    url="http://www.jingdong.com/"    
    driver=webdriver.Chrome()    
    driver.get(url)    
    Search_Product('特仑苏')    
    driver.maximize_window()    
    Click_Search()    
    time.sleep(3)      #进程挂起3秒,等待窗口加载完成,未加载完成会导致爬取的数据不全,或者元素无法定位    
    driver.execute_script("window.scrollBy(0, 8000)")    #下拉滚动条以使网页中的全部商品信息加载,不下拉进度条,下半部分信息不显示    
    time.sleep(1)    
    while(count<int(PageNum())):          
          products_info=driver.find_elements_by_xpath('//div[@class = "gl-i-wrap"]')        
          for div in products_info:            
              name=div.find_element_by_xpath('.//div[@class="p-name p-name-type-2"]')     #商品名称            
              price=div.find_element_by_xpath('.//div[@class="p-price"]//i')           #价格            
              shop=div.find_element_by_xpath('.//div[@class="p-shop"]')  #店铺名称            
              commit=div.find_element_by_xpath('.//div[@class="p-commit"]//a')       #评价            
              products.append((name.text,price.text+'元',shop.text,commit.text+'评论'))            
          pagenum=count+1        
          print('第'+str(pagenum)+'页已提取,共'+PageNum()+'页')        
          Page_Next()        
          time.sleep(3)        
          driver.execute_script("window.scrollBy(0, 8000)")            
          time.sleep(1)        
          count+=1    
    driver.quit()    
    print(products)


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值