代码如下:
from selenium import webdriver
from lxml import etree
import time
import xlwt
driver = webdriver.PhantomJS() #实例化游览器
driver.maximize_window() #窗口最大化
linkss = []
def get_info(url,page): #定义获取商品信息的函数
page = page + 1
driver.get(url)
driver.implicitly_wait(10) #隐式等待10秒
selector = etree.HTML(driver.page_source) #请求网页源代码
infos = selector.xpath('//div[@class="item J_MouserOnverReq "]')
for info in infos:
jiage = info.xpath('div[2]/div[1]/div[1]/strong/text()')
good = info.xpath('div[2]/div[1]/div[2]/text()')
name = info.xpath('div[2]/div[2]/a/text()')
links = [jiage,good,name]
linkss.append(links)
if page <= 50:
NextPage(url,page) #进入下一页
else:
pass
def NextPage(url, page): #定义进入下一页的函数
driver.get(url)
driver.implicitly_wait(10)
driver.find_element_by_xpath('//a[@trace="srp_bottom_pagedown"]').click()
time.sleep(4)
driver.get(driver.current_url)
driver.implicitly_wait(10)
get_info(driver.current_url,page) #调用get_info函数
if __name__ == '__main__': #程序主入口
page = 1
url = 'https://www.taobao.com/'
driver.get(url)
driver.implicitly_wait(10)
driver.find_element_by_id('q').clear()
driver.find_element_by_id('q').send_keys('男士短袖') #输入商品名称
driver.find_element_by_class_name('btn-search').click() #点击搜索
get_info(driver.current_url,page)
headers = ['价格', '购买人数', '商品名称'] #创建表头
taobao = xlwt.Workbook(encoding='utf-8') #创建工作簿
sheet = taobao.add_sheet('Sheet1') #创建工资表
for h in range(len(headers)): #写入表头
sheet.write(0, h, headers[h])
i = 1
for link in linkss: #写入数据
j = 0
for data in link:
sheet.write(i, j, data)
j += 1
i += 1
taobao.save('t.xls') #保存到本地
报错:
Traceback (most recent call last):
File "D:/PaaChong/TaoBao.py", line 44, in <module>
get_info(driver.current_url,page)
File "D:/PaaChong/TaoBao.py", line 23, in get_info
NextPage(url,page) #进入下一页
File "D:/PaaChong/TaoBao.py", line 30, in NextPage
driver.find_element_by_xpath('//a[@trace="srp_bottom_pagedown"]').click()
File "D:\Python3.8.1\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 258, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "D:\Python3.8.1\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 711, in find_element
return self.execute(Command.FIND_ELEMENT,
File "D:\Python3.8.1\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute
self.error_handler.check_response(response)
File "D:\Python3.8.1\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: {"errorMessage":"Unable to find element with xpath '//a[@trace=\"srp_bottom_pagedown\"]'","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"119","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:59370","User-Agent":"Python-urllib/3.8"},"httpVersion":"1.1","method":"POST","post":"{\"using\": \"xpath\", \"value\": \"//a[@trace=\\\"srp_bottom_pagedown\\\"]\", \"sessionId\": \"566c2c60-9ccd-11ea-b689-cbd2ca6c443c\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/566c2c60-9ccd-11ea-b689-cbd2ca6c443c/element"}}
Screenshot: available via screen