当前位置:   article > 正文

动态爬虫(以携程为目标,爬取评论分数留言等)_携程景区评论 爬虫

携程景区评论 爬虫

       去年就说写了,但是有点事忘了(懒癌犯了)。今天就补一下欠债吧。但是不想写太多,就以代码为主,进行一个代码讲解。

1.用到的工具

      我使用到的比较少,Xpath,谷歌浏览器,chromedriver.exe插件,语言是python。

2.代码解释

         下面是一个针对携程上旅游景点东方明珠的爬取。

  1. !pip install xlwt
  2. import selenium
  3. from selenium import webdriver
  4. import time
  5. import xlwt
  6. from selenium.webdriver.support import ui
  7. wait_name=180
  8. datalist=[]
  9. #2网址
  10. url=f'https://you.ctrip.com/sight/shanghai2/762.html'
  11. #3.打开浏览器
  12. path='D:/chromdriver/1/chromedriver.exe'
  13. browser=webdriver.Chrome(executable_path=path)
  14. browser.get(url)
  15. browser.implicitly_wait(10)
  16. #寻找每一个节点
  17. for i in range(0,300):
  18. try:
  19. wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span"))#评分
  20. col=browser.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span")
  21. wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']"))
  22. col2=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']")#评价
  23. wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']"))
  24. col3=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']")#时间
  25. for j in range(0,len(col)):
  26. data=[]
  27. data.append(col[j].text)
  28. data.append(col2[j].text)
  29. data.append(col3[j].text)
  30. datalist.append(data)
  31. except Exception as error:
  32. print(error)
  33. try:
  34. wait=ui.WebDriverWait(browser,wait_name)
  35. button=browser.find_element_by_xpath("//li[@title='下一页']")
  36. button.click()
  37. except Exception as error:
  38. print(error)
  39. #3.保存数据
  40. book=xlwt.Workbook(encoding="utf-8",style_compression=0)#创建Workbook对象
  41. sheet=book.add_sheet('东方明珠评价',cell_overwrite_ok=True)#创建工作表
  42. colls=("评分","评价","时间")
  43. for i in range(0,3):
  44. sheet.write(0,i,colls[i])
  45. for i in range(0,len(datalist)):
  46. data=datalist[i]
  47. for j in range(0,3):
  48. sheet.write(i+1,j,data[j])
  49. book.save("D:/携程东方明珠评价.xls")

我在我自己本机环境运行是成功的。下面对几个代码进行解释。

(1)爬取的地址

url=f'https://you.ctrip.com/sight/shanghai2/762.html'

 (2)插件位置

  1. #打开浏览器
  2. path='D:/chromdriver/1/chromedriver.exe'
  3. browser=webdriver.Chrome(executable_path=path)
  4. browser.get(url)
  5. browser.implicitly_wait(10)

(3)爬取的位置(这一块是用XPath进行定位的)

  1. wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span"))#评分
  2. col=browser.find_elements_by_xpath("//div[@class='commentItem']/div[@class='contentInfo']/div/span")
  3. wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']"))
  4. col2=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentDetail']")#评价
  5. wait.until(lambda driver:driver.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']"))
  6. col3=browser.find_elements_by_xpath("//div[@class='commentItem']//div[@class='commentTime']")#时间
  7. for j in range(0,len(col)):
  8. data=[]
  9. data.append(col[j].text)
  10. data.append(col2[j].text)
  11. data.append(col3[j].text)
  12. datalist.append(data)

(4)点击下一页,翻页查询

  1. wait=ui.WebDriverWait(browser,wait_name)
  2. button=browser.find_element_by_xpath("//li[@title='下一页']")
  3. button.click()

3.可能出现的问题

 这个问题就是chromedriver.exe与谷歌的版本对不上,请检查版本。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/372294
推荐阅读
相关标签
  

闽ICP备14008679号