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

博主补写爬虫代码讲解,以代码为主。使用Xpath、谷歌浏览器、chromedriver.exe插件和Python语言,针对携程上东方明珠景点进行爬取,解释了爬取地址、插件位置、爬取位置定位及翻页查询等代码,还指出可能存在chromedriver.exe与谷歌版本不匹配的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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与谷歌的版本对不上,请检查版本。

### 如何用Java实现微博评论爬虫 要使用Java编写一个能够抓取微博评论爬虫程序,需要综合考虑目标网站的技术特性以及可能涉及的法律和道德约束。以下是关于如何构建这样一个系统的详细说明: #### 1. 技术准备 为了成功抓取微博评论数据,通常会依赖于一些成熟的库和技术工具。例如,`Jsoup` 可以用来解析静态页面中的 HTML 结构[^3];而 `Selenium` 则适用于处理动态加载的内容,尤其是当评论是以 AJAX 请求形式异步加载时[^4]。 #### 2. 动静结合策略 在实际应用中,微博页面可能是由前端框架渲染而成的动态网页。这意味着部分或者全部所需的数据并不会直接显示在初始加载后的 HTML 文档里。此时可以通过以下方式解决: - **对于简单的HTML结构**:利用 Jsoup 提供的功能提取固定位置的信息。 - **针对复杂的交互逻辑**:采用 Selenium 自动化浏览器行为模拟真实用户的浏览过程,包括但不限于滚动条拖拽、按钮点击等动作触发更多隐藏内容展示出来后再进行采集工作。 #### 3. 法律与伦理考量 值得注意的是,在执行任何网络爬行活动前都应该仔细阅读并遵循目标站点的服务条款(Site's Terms of Service),确保自己的行动处于合理范围内不侵犯他人隐私权利同时也避免触犯法律法规风险。正如前面提到过的那样,“一切爬虫操作都应在合法合规的情况下进行。” 此外还应尊重API限流机制以免对服务器造成过大压力影响正常用户体验[^2]。 #### 示例代码片段 下面给出一段基础版本的 Java 爬虫示例,该例子假设我们面对的是相对较为简单的场景——即不需要特别复杂的身份验证流程就能访问的目标资源路径下获取公开可见的部分用户发布状态下的回复留言记录等内容: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class WeiboCommentCrawler { public static void main(String[] args) throws Exception{ String url = "https://weibo.com/p/xxx"; // 替换为具体的微博详情页链接 Document doc = Jsoup.connect(url).get(); Elements comments = doc.select(".comment-item"); // 假设这是包含每条评论的选择器 for (Element comment : comments){ System.out.println(comment.text()); } } } ``` 上述代码仅为示意目的设计,并未考虑到实际情况可能会遇到的各种异常情况处理等问题。实际项目开发过程中还需要加入更多的错误检测机制以及其他优化措施来提高稳定性和效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风与酒都没有

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值