先简单说一下,利用的是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()