赞
踩
去年就说写了,但是有点事忘了(懒癌犯了)。今天就补一下欠债吧。但是不想写太多,就以代码为主,进行一个代码讲解。
1.用到的工具
我使用到的比较少,Xpath,谷歌浏览器,chromedriver.exe插件,语言是python。
2.代码解释
下面是一个针对携程上旅游景点东方明珠的爬取。
- !pip install xlwt
-
- import selenium
- from selenium import webdriver
- import time
- import xlwt
- from selenium.webdriver.support import ui
-
-
- wait_name=180
- datalist=[]
-
-
- #2网址
- url=f'https://you.ctrip.com/sight/shanghai2/762.html'
-
- #3.打开浏览器
- path='D:/chromdriver/1/chromedriver.exe'
- browser=webdriver.Chrome(executable_path=path)
- browser.get(url)
- browser.implicitly_wait(10)
-
- #寻找每一个节点
-
- for i in range(0,300):
-
- try:
- wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span"))#评分
- col=browser.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span")
- wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']"))
- col2=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']")#评价
- wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']"))
- col3=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']")#时间
- for j in range(0,len(col)):
- data=[]
- data.append(col[j].text)
- data.append(col2[j].text)
- data.append(col3[j].text)
- datalist.append(data)
- except Exception as error:
- print(error)
-
- try:
- wait=ui.WebDriverWait(browser,wait_name)
- button=browser.find_element_by_xpath("//li[@title='下一页']")
- button.click()
- except Exception as error:
- print(error)
-
- #3.保存数据
-
-
- book=xlwt.Workbook(encoding="utf-8",style_compression=0)#创建Workbook对象
- sheet=book.add_sheet('东方明珠评价',cell_overwrite_ok=True)#创建工作表
- colls=("评分","评价","时间")
- for i in range(0,3):
- sheet.write(0,i,colls[i])
- for i in range(0,len(datalist)):
- data=datalist[i]
- for j in range(0,3):
- sheet.write(i+1,j,data[j])
-
- book.save("D:/携程东方明珠评价.xls")
我在我自己本机环境运行是成功的。下面对几个代码进行解释。
(1)爬取的地址
url=f'https://you.ctrip.com/sight/shanghai2/762.html'
(2)插件位置
- #打开浏览器
- path='D:/chromdriver/1/chromedriver.exe'
- browser=webdriver.Chrome(executable_path=path)
- browser.get(url)
- browser.implicitly_wait(10)
(3)爬取的位置(这一块是用XPath进行定位的)
- wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span"))#评分
- col=browser.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span")
- wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']"))
- col2=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']")#评价
- wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']"))
- col3=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']")#时间
- for j in range(0,len(col)):
- data=[]
- data.append(col[j].text)
- data.append(col2[j].text)
- data.append(col3[j].text)
- datalist.append(data)
(4)点击下一页,翻页查询
- wait=ui.WebDriverWait(browser,wait_name)
- button=browser.find_element_by_xpath("//li[@title='下一页']")
- button.click()
3.可能出现的问题
这个问题就是chromedriver.exe与谷歌的版本对不上,请检查版本。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。