详细介绍一下Python中如何使用来创建爬虫?

liftword1周前 (02-21)技术文章10

Selenium是一个用来对Web应用程序进行测试的自动化测试工具,能够模拟出用户在浏览器中的各种行为,通过自动化的操作来执行任务,例如说可以模拟用户点击按钮、填写表单、抓取网页内容等,虽然是一个自动化测试工具,但是被很多开发者用来构建网络爬虫,尤其是在一些使用了动态技术进行交互的页面中,这个工具的效果非常好的。可以与多种浏览器兼容,支持了各种的编程语言。

??下面我们以谷歌浏览器为例来演示如何使用Selenium

安装Selenium

??想要使用Selenium,就必须要先安装Selenium,如下所示。

pip install selenium

??此外,Selenium还需要WebDriver来控制浏览器的行为,一般的比较常用的WebDriver有ChromeDriver、GeckoDriver(Firefox)等,这里以ChromeDriver为例,可以在下面的这个连接中获取。

https://storage.googleapis.com/chrome-for-testing-public/131.0.6778.264/win64/chromedriver-win64.zip

设置WebDriver

??Selenium的工作原理是通过WebDriver来控制浏览器行为,来模拟一些用户操作,如下所示。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# 设置ChromeDriver路径
chrome_driver_path = 'H:/python-mini-script-warehouse/Selenium/chromedriver-win64/chromedriver.exe'

# 创建Service对象,并传入ChromeDriver路径
service = Service(chrome_driver_path)

# 使用WebDriver启动浏览器
driver = webdriver.Chrome(service=service)

# 访问网站
driver.get('https://www.baidu.com')

# 执行其他操作
driver.quit()

加载网页并获取网页内容

??接下来我们就来通过Selenium来加载网页并且模拟用户操作,如下所示,我们可以通过driver.get()方法加载一个页面,之后可以通过不同的方法获取网页内容。

# 获取网页标题
title = driver.title
print(title)

# 获取网页源代码
html_source = driver.page_source
print(html_source)

??在Selenium中还提供了很多的方法来获取网页上的元素,如下所示。

查找单个元素

element = driver.find_element_by_id('element_id')  # 通过ID查找
# 获取元素的文本内容
print(element.text)

# 通过类名查找
element = driver.find_element_by_class_name('class_name')

查找多个元素

elements = driver.find_elements_by_class_name('class_name')
for element in elements:
    print(element.text)

??当然还有一些其他的查询操作,如下所示。

  • find_element_by_name()
  • find_element_by_xpath()
  • find_element_by_css_selector()

??从名称上也可以看出了分别是通过名称查找、通过xpath查找、通过Class选择器查找。

处理动态内容

??在上面的介绍中我们提到过Selenium的优势就在于对于JavaScript动态渲染的内容的处理,下面我们就来详细介绍一下。

显式等待

??可以通过WebDriverWait来显式等待某个元素加载完成,如下所示。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待某个元素出现(如,等待id为"element_id"的元素可见)
element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, "element_id"))
)
print(element.text)

滚动页面

??在很多页面操作中,内容是需要滚动页面才能进行加载的,这个时候,我们就可以通过JavaScript来执行滚动操作。

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

模拟交互

??通过Selenium我们也可以模拟出一些用户的交互行为,例如点击按钮,输入表单等,如下所示。

# 输入框输入文本
input_box = driver.find_element_by_name('q')
input_box.send_keys('Python Selenium')

# 点击按钮
submit_button = driver.find_element_by_name('btnK')
submit_button.click()

关闭浏览器

??在模拟操作完成之后,我们可以通过如下的操作来关闭浏览器。

driver.quit()

完整的百度搜索实现

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
import time

# 设置ChromeDriver路径
chrome_driver_path = './Selenium/chromedriver-win64/chromedriver.exe'

# 创建Service对象,并传入ChromeDriver路径
service = Service(chrome_driver_path)

# 使用WebDriver启动浏览器
driver = webdriver.Chrome(service=service)

# 访问网站
driver.get('https://www.baidu.com')

input_box = driver.find_element(By.ID,"kw")
input_box.send_keys('Python')

# 提交搜索(模拟按下回车键)
input_box.send_keys(Keys.RETURN)

# 等待搜索结果加载
time.sleep(2)

# 获取搜索结果并打印
results = driver.find_elements(By.CSS_SELECTOR, '.result.c-container')
for index, result in enumerate(results[:5], start=1):  # 获取前5个结果
    title = result.find_element(By.CSS_SELECTOR, 'h3').text
    link = result.find_element(By.CSS_SELECTOR, 'a').get_attribute('href')
    print(f'{index}. Title: {title}, Link: {link}')

# 关闭浏览器
driver.quit()

总结

??Selenium是一个功能强大的浏览器自动化工具,尤其适用于处理动态内容或需要与页面进行交互的场景。尽管它比传统的requestsBeautifulSoup等爬虫库要慢一些,但它能够更好地模拟用户行为,适用于复杂的网页爬取任务。

相关文章

Python实现一个基础爬虫?_用python做一个爬虫

Python爬虫技术就是指通过Python语言来编写一些自动化的数据处理程序从网页上来获取自己想要的数据,我们可以通过Python爬虫来获取公开网页上的数据,对数据进行分析、存储、数据可视化展示等操作...

什么是Python爬虫?一篇文章带你全面了解爬虫

一、什么叫爬虫爬虫,又名“网络爬虫”,就是能够自动访问互联网并将网站内容下载下来的程序。它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的然后存储到云端,为网友...

程序员python入门课,30分钟学会,30行代码写爬虫项目

现在很多人学习编程,最开始就是选择的python,因为python现在比较火,薪资水平在程序员领域也是比较高的,入门快,今天就给大家分享一个用python写的小爬虫项目,只需要30行代码,认真学习,...

巨细!Python爬虫详解_python爬虫详细教程

来源:【公众号】Python技术爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者);它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。如果我们把互联网比作一张大...

Python爬虫常用的8个技巧,让你爬取数据得心应手

今天跟大家分享几个我在爬虫中用到的技巧,让你轻松爬取所需数据。技巧一:随机暂停,迷惑反爬机制高频率访问容易被网站识别为爬虫,所以我们要学会“劳逸结合”!使用 time.sleep() 函数,加上随机时...