利用selenium动态爬取淘宝的商品信息

先简单说一下,利用的是selenium模仿浏览器访问淘宝,使用xpath分离其中的数据,经过多次的修改之后,已经可以完成完整的中断再访问功能,
其中相对比较关键的遍历代码已经被我删除了,如果想要使用代码的话可以call我,现在可以实现的功能自动的登录、搜索,只是去除了中间的遍历功能,有一定爬虫代码功底的人结合注释应该都可以看懂.

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
import requests
import csv


driver = webdriver.Chrome()
driver.get('https://www.taobao.com/')
time.sleep(5)   #停一会防止出意外
#登陆账号
driver.find_element_by_xpath("//a[@href='https://login.taobao.com/member/login.jhtml?f=top&redirectURL=https%3A%2F%2Fwww.taobao.com%2F']").click()    #清空搜索框
driver.maximize_window()  #放大一下显示出扫码界面
driver.find_element_by_xpath("//i[@class='iconfont icon-qrcode']").click() 
time.sleep(20)  
#进入具体的搜索界面
cxxx='时装'    #搜索内容
driver.find_element_by_xpath("//input[@aria-label='请输入搜索文字']").clear()    #清空搜索框
driver.find_element_by_xpath("//input[@aria-label='请输入搜索文字']").send_keys(cxxx)    #向搜索框中添加内容
#进入搜索中的具体内容
driver.find_element_by_xpath("//button[.='搜索']").click()    #点击搜索
time.sleep(3)
i=0  #i作为参数进行控制
#我们接下来设置一个启动时的程序,来控制开始时的翻页
fy=open('text.txt')#刚开始打开时的翻页控制
ym=fy.read()
ym=int(ym)
fy.close()
js="var q=document.documentElement.scrollTop=100000"    #翻到页尾
driver.execute_script(js)    #翻到页尾
driver.find_element_by_xpath("//*[@id='mainsrp-pager']/div/div/div/div[2]/input").clear() #清空搜索框  
driver.find_element_by_xpath("//*[@id='mainsrp-pager']/div/div/div/div[2]/input").send_keys(ym) #输入
driver.find_element_by_xpath("//*[@id='mainsrp-pager']/div/div/div/div[2]/span[3]").click() #点击进入中断页
while(i<=96):
    time.sleep(3)
    all_handle = driver.window_handles
    driver.switch_to_window(all_handle[-1]) #切换完成
    if(i==96):
        i=0   #如果一页翻完,对其重置
        #需要使其进入下一页
        driver.refresh() 
       # js="var q=document.documentElement.scrollTop=100000"  
        #driver.execute_script(js)  
        time.sleep(3) 
        ym=ym+1
        #存储中断页
        with open('text.txt','w') as file:
            file.write(str(ym))
       # ymstr=str(ym)
       # driver.find_element_by_xpath("//*[@id='mainsrp-pager']/div/div/div/div[2]/input").clear()    #清空搜索框
       # driver.find_element_by_xpath("//*[@id='mainsrp-pager']/div/div/div/div[2]/input").send_keys(ymstr)    #向搜索框中添加内容
        js_top = "var q=document.documentElement.scrollTop=0" #滚动到页面顶部
        driver.execute_script(js_top)
        driver.find_element_by_xpath("//*[@id='J_relative']/div[1]/div/div[2]/ul/li[3]/a").click()   #点击翻页   
        
    a=driver.find_elements_by_xpath("//a[@trace='msrp_auction']")  #寻找trace属性为msrp_auction的元素 
    if(i>=len(a)):
        i=96
        continue
    else:
        a[i].click()  #进行点击  
    i=i+2   #依次
    time.sleep(7)
    #加下来把页柄切到新的一页Unable to locate element: {"method":"xpath","selector":"//*[@id='J_Title']/h3"}   (Session info: chrome=83.0.4103.116) 

    all_handle = driver.window_handles
    driver.switch_to_window(all_handle[-1]) #切换完成
    try:
        print("删除了")
    except:
        driver.close()
        continue
    print('商品名称:'+spm)
    print('商品价格:'+spjg)
    print('商品店铺:'+spdp)
    print('商品产地:'+spcd)
    #写一下存储信息功能
    with open('data.csv','a') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([spm,spjg,spdp,spcd])
    print(i)
    driver.close()
    

你可能感兴趣的:(爬虫)