当前位置:   article > 正文

使用Python和Selenium抓取网页内容_利用selenium模拟访问网页的行为,并基于python的sniff函数抓取加载页面产生的安全

利用selenium模拟访问网页的行为,并基于python的sniff函数抓取加载页面产生的安全

采集动态网页是困扰许多人的难题,不妨使用 Python 和 Selenium抓取网页数据。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

你是否对从网站提取数据感兴趣,但发现自己被网络抓取的复杂性所困扰?不要害怕,我们在这篇文章中将展示如何利用 Selenium 和 Python 的强大功能使网络抓取变得轻而易举。

在深入之前,我们先简要定义网络抓取。Web抓取是从网站自动提取数据的过程。它可用于多种目的,例如从电子商务网站提取产品信息、收集研究数据或监控在线活动。通过网络抓取,可能性是无限的。

现在,让我们探讨一下我们将在这篇文章中涵盖的子主题:

从网页中提取数据

要从网页中提取数据,我们将使用 Selenium WebDriver for Python。WebDriver 是一个强大的工具,它能以编程方式控制网络浏览器。我们将使用它导航到网页、定位页面上的元素以及提取我们感兴趣的数据。

假设我们要从新闻网站中提取热门新闻文章的标题。我们可以使用 Selenium 来自动化导航到网站和提取标题的过程。这是一个示例代码片段,它就是这样做的:

  1. from selenium import webdriver
  2. # create a new Chrome browser instance
  3. browser = webdriver.Chrome()
  4. # navigate to the news website
  5. browser.get('https://www.bbc.com/news')
  6. # locate the top news articles
  7. articles = browser.find_elements_by_class_name('gs-c-promo-heading__title')
  8. # extract the titles of the top news articles
  9. for article in articles:
  10.     print(article.text)
  11.     
  12. close the browser window
  13. browser.quit()

在本例中,我们使用webdriver.Chrome()方法创建一个新的 Chrome 浏览器实例。然后我们使用该browser.get()方法导航到新闻网站。进入页面后,我们使用该browser.find_elements_by_class_name()方法按类名定位热门新闻文章。最后,我们遍历文章并使用article.text属性提取它们的标题。

解析 HTML 和 XML 数据

我们从网页中提取的数据通常是 HTML 或 XML 格式。为了理解这些数据,我们需要使用像 BeautifulSoup 这样的库来解析它。BeautifulSoup 是一个 Python 库,它允许我们从 HTML 和 XML 文件中提取数据。

这是我们如何使用 BeautifulSoup 从 HTML 文件中提取数据的示例:

  1. from bs4 import BeautifulSoup
  2. # define the HTML file
  3. html = '<html><body><h1>Hello, world!</h1></body></html>'
  4. # parse the HTML file
  5. soup = BeautifulSoup(html, 'html.parser')
  6. # extract the text from the <h1> tag
  7. text = soup.find('h1').get_text()
  8. # print the extracted text
  9. print(text)

在此示例中,我们将 HTML 文件定义为字符串并使用 BeautifulSoup 对其进行解析。然后我们使用该soup.find()方法定位标签并使用该get_text()方法提取其文本。

从动态网页中抓取数据

有时,网页使用在加载初始 HTML 后使用 JavaScript 加载的动态内容。这会使仅使用请求和 Beautiful Soup 来抓取数据变得困难。

在这些情况下,你可以使用像 Selenium 这样的无头浏览器来模拟用户与网页的交互并检索完全呈现的内容。下面是一个使用 Selenium 从动态加载的网页中抓取数据的示例:

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. from selenium.webdriver.support import expected_conditions as EC
  5. url = 'https://www.amazon.com/gp/bestsellers/electronics/'
  6. driver = webdriver.Chrome()
  7. driver.get(url)
  8. wait = WebDriverWait(driver, 10)
  9. wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div.zg_itemImmersion')))
  10. items = driver.find_elements_by_css_selector('div.zg_itemImmersion')
  11. for item in items:
  12.     title = item.find_element_by_css_selector('div.p13n-sc-truncated').text.strip()
  13.     author = item.find_element_by_css_selector('a.a-size-small.a-link-child').text.strip()
  14.     print(f"{title} by {author}")
  15.     
  16. driver.quit()

“网页抓取就像用剪刀剪草坪。当然,它有效,但结果很混乱,你错过了很多。” — 马克·伊顿

在这篇文章中,我们介绍了使用 Selenium 和 Python 进行网络抓取的基础知识。我们已经学习了如何从网页中提取数据、解析 HTML 和 XML 数据,甚至从动态加载的网页中抓取数据。

推荐书单

《Python从入门到精通(第2版)》

《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。

《Python从入门到精通(第2版)》【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《Python从入门到精通(第2版)》在线选购,本书作者:明日科技,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!icon-default.png?t=N4P3https://item.jd.com/13284890.html

精彩回顾

ChatGPT教你如何用Python和Matplotlib绘图(上) 

ChatGPT教你如何用Python和Matplotlib绘图(下) 

《事半功倍,使用ChatGPT编写Python函数》

超快速,使用ChatGPT编写回归和分类算法

《如虎添翼,将ChatGPT和Python结合起来!》

《ChatGPT优化Python代码的小技巧》

《使用ChatGPT提升Python编程效率》 

微信搜索关注《Python学研大本营》

访问【IT今日热榜】,发现每日技术热点

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

闽ICP备14008679号