基于selenium和xpath定位方法爬取某个话题下的微博内容!是真的强!

本文介绍了如何使用selenium和xpath来模拟用户操作,爬取微博中#嘉兴南湖#话题的评论内容。详细讲解了从安装Firefox驱动到定位元素、模拟输入、翻页等步骤,以及处理翻页和循环结构的重难点。
摘要由CSDN通过智能技术生成

为什么这期要叫暴力爬虫呢?因为笔者认为基于selenium方法非常的简单粗暴!!理由有两点:

1.在selenium方法下,我们可以通过调用浏览器驱动来实现模拟鼠标点击、滑轮下滑以及输入文本等操作,就像真正的用户正在操作浏览器一样(如此一来便可以解决某些需要用户登录才能获取界面的网站),而且在访问网站层面,它的安全性是高于requests方法的,因为它不需要构造一个虚拟请求,所有的操作都是真实发生的。

2.selenium获取网页信息的方法是基于网页的elements而不是network。网页的编排规则一般是:network 下显示了服务器响应给浏览器的文件,这些文件可能包含html、json等格式,浏览器拿到这些文件后,组装成 elements,显示出来。简单理解为,elements是封装得最好的信息,我们在网页上看得到的,elements中都有,即“所见即可得”。在这种情况下,获取到的数据文本就不需要再经过复杂的解析。 目前selenium只支持通过Firefox和Chrome两款浏览器进行操作,本文以Firefox为例进行介绍。

安装Firefox驱动

根据操作系统下载Firefox驱动的压缩包,Firefox驱动的中文下载网站:https://liushilive.github.io/github_selenium_drivers/md/Firefox.html

下载好压缩包后,解压得到geckodriver.exe文件,将该文件安装到Python的环境文件夹中site-packages,也可以单独对该文件配置环境变量,

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.action_chains import ActionChains  ##引入ActionChains鼠标操作类

 

设定目标内容,分析网站结构***

需求场景:因为今年是建dang百年,笔者想去dang的出生地‘’嘉兴南湖‘’旅游,所以想先到微博上看看相关的评价。

我们以mobile端的微博为例(网站地址:https://m.weibo.cn/)对#嘉兴南湖#下的内容进行爬取。首先手工打开网页模拟一遍操作流程

1.打开网页,得到首页信息
微博mobile版的首页如下,网页最上端即搜索栏

å¨è¿éæå¥å¾çæè¿°

.用鼠标点击搜索栏,输入搜索内容
然而我们发现,这个搜索栏并不是直接可以输入文本的,我们需要用鼠标点一下,进入到如下图所示的这一个输入界面,在这个输入框中,可以直接敲键盘输入‘#嘉兴南湖#’的内容,之后再敲一下键盘上的回车

å¨è¿éæå¥å¾çæè¿°

3.分析话题下的用户内容***
敲回车之后得到的页面是这样的,微博默认以“综合”评价的方式对用户数据进行排列,但我们想以时间的顺序有先有后地来浏览用户评论内容,因此点击“实时”按钮

å¨è¿éæå¥å¾çæè¿°

得到在以时间先后

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是使用Selenium库和XPATH、CSS选择器爬取携程网信息的示例: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("https://www.ctrip.com/") # 使用CSS选择器定位输入框并输入关键字 input_box = driver.find_element_by_css_selector("#searchHotelLevelSelect") input_box.send_keys("上海") # 使用CSS选择器定位搜索按钮并点击 search_button = driver.find_element_by_css_selector("#searchHotelLevelSelectBtn") search_button.click() # 等待搜索结果加载完成 wait = WebDriverWait(driver, 10) wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".list_mod2"))) # 使用XPATH选择器定位酒店列表并获取信息 hotel_list = driver.find_elements_by_xpath("//ul[@class='hotel_item']/li") for hotel in hotel_list: name = hotel.find_element_by_xpath(".//h2/a").text address = hotel.find_element_by_xpath(".//p[@class='address']/span[1]")text print(name, address) driver.quit() ``` 在上面的示例中,我们使用Selenium库和XPATH、CSS选择器来爬取携程网上的酒店信息。首先,我们使用CSS选择器定位搜索框并输入关键字“上海”,然后使用CSS选择器定位搜索按钮并点击。接下来,我们使用WebDriverWait等待搜索结果加载完成,然后使用XPATH选择器定位酒店列表,并使用find_element_by_xpath方法和相对路径来获取酒店名称和地址信息。最后,我们遍历酒店列表并打印出酒店名称和地址信息。 需要注意的是,爬取网站的时候要遵守相关法律法规和网站的爬虫规则,以免引起不必要的法律问题。同时,还需要注意反爬虫机制,如设置User-Agent、使用代理等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值