使用Python和Selenium抓取网页内容

这篇具有很好参考价值的文章主要介绍了使用Python和Selenium抓取网页内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

python selenium获取html,python,selenium,chrome

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

从网页中提取数据

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

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

from selenium import webdriver

# create a new Chrome browser instance
browser = webdriver.Chrome()
# navigate to the news website
browser.get('https://www.bbc.com/news')
# locate the top news articles
articles = browser.find_elements_by_class_name('gs-c-promo-heading__title')
# extract the titles of the top news articles
for article in articles:
    print(article.text)
    
# close the browser window
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 文件中提取数据的示例:

from bs4 import BeautifulSoup

# define the HTML file
html = '<html><body><h1>Hello, world!</h1></body></html>'
# parse the HTML file
soup = BeautifulSoup(html, 'html.parser')
# extract the text from the <h1> tag
text = soup.find('h1').get_text()
# print the extracted text
print(text)

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

从动态网页中抓取数据

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

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

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

url = 'https://www.amazon.com/gp/bestsellers/electronics/'
driver = webdriver.Chrome()
driver.get(url)
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div.zg_itemImmersion')))
items = driver.find_elements_by_css_selector('div.zg_itemImmersion')
for item in items:
    title = item.find_element_by_css_selector('div.p13n-sc-truncated').text.strip()
    author = item.find_element_by_css_selector('a.a-size-small.a-link-child').text.strip()
    print(f"{title} by {author}")
    
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版)》在线选购,本书作者:明日科技,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!https://item.jd.com/13284890.html

python selenium获取html,python,selenium,chrome

精彩回顾

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

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

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

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

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

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

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

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

访问【IT今日热榜】,发现每日技术热点文章来源地址https://www.toymoban.com/news/detail-728398.html

到了这里,关于使用Python和Selenium抓取网页内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python使用Selenium Webdriver爬取网页所有内容

    有时候,我们在用urllib或者requests库抓取页面时,得到的html源代码和浏览器中看到的不一样。这将是我们面临的一个非常常见的问题。现在网页越来越多地采用Ajax、前端模块化工具来构建,整个网页可能都是由JavaScript渲染出来的,也就是说原始的HTML代码可能就是一个空壳,

    2023年04月08日
    浏览(37)
  • Python Selenium绕过Cloudflare抓取网页

    Cloudflare和很多其他网站一样会检测访问是否为Selenium bot,其中一项为检测Selenium运行时出现的特有js变量。 这里主要包括了是否含有\\\"selenium\\\"/ \\\"webdriver\\\"的变量或者含有\\\"$cdc_\\\"/\\\"$wdc_\\\"的文件变量。 每个driver的检测机制会不一样,此处给出的方案基于chromedriver。 1. Undetected-chromedri

    2024年02月11日
    浏览(62)
  • 一个月学通Python(三十四):使用Selenium模拟人工操作及获取网页内容

    结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 再推荐一下最近热更的:《大厂测试高频面试题详解》 该专栏对近年

    2024年02月13日
    浏览(49)
  • Python用selenium采集网页内容被屏蔽了

            如果在使用Selenium访问某个网页时,你发现页面被屏蔽或出现了类似于“检测到自动化软件,请手动操作”的提示,这通常是因为该网站有反爬策略,用于检测和阻止自动化工具的访问。以下是一些可能帮助你绕过这些反爬策略的方法: 1、使用无头浏览器(Head

    2024年03月22日
    浏览(98)
  • python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器

    背景:通过python中直接get或者urlopen打开一些有延迟加载数据的网页,会抓取不到部分信息。 1. 命令行打开chrome,并开启调试端口 (前提,找到chrome安装目录,找到chrome.exe所在路径,添加到环境变量中,例如我的是C:Program FilesGoogleChromeApplication) remote-debugging-port指定远程调试

    2024年02月16日
    浏览(63)
  • python使用selenium库如何抓取一幅图片

    要使用Python的Selenium库抓取一幅图片,你需要执行以下步骤: 安装Selenium库(如果你还没有安装的话): pip install selenium 下载对应浏览器的WebDriver。Selenium本身不直接控制浏览器,而是通过WebDriver与浏览器交互。你需要下载与你的浏览器版本相匹配的WebDriver。例如,如果你使

    2024年03月17日
    浏览(66)
  • 利用Python和Selenium编程,实现定时自动检索特定网页,发现特定网页内容发生变化后,向管理员发送提醒邮件(一)

            要求爬取某单位网站,登录后台查看是否有新增“网友提问”,如果有新的提问,向特定邮箱发出提醒邮件。 首先查看该网站的robots.txt文件,发现不存在该文件,由于未禁止,可用爬取取相关信息。 查看是否有网友提问的操作流程如下。 1、登录网站后台管理页面

    2024年02月17日
    浏览(65)
  • python使用selenium打开网页失败

    以上是我的代码,没有做课题,直接敲出现一下问题: 1、第一句报红 没下载selenium 在win+R---cmd中直接运行命令  2、网页打不开---没有下载浏览器驱动器(以谷歌为例) 首先在谷歌的设置--关于中查看版本号  然后打开网址http://npm.taobao.org/mirrors/chromedriver/ 找到前缀和自己版

    2024年01月19日
    浏览(47)
  • python使用selenium模拟登录网页页面

    python的selenium用于自动化测试,但是在自动化测试的时候也可以用来模拟登录,本次用selenium模拟登录某DN网页 代码如下(示例): 本次使用的是谷歌的内核若有需要,也可以换其他浏览器的内核 首先打开CSDN页面准备在页面中定位元素 为方便操作,直接在开发者界面中复制

    2024年02月13日
    浏览(33)
  • Python爬虫基础(三):使用Selenium动态加载网页

    Python爬虫基础(一):urllib库的使用详解 Python爬虫基础(二):使用xpath与jsonpath解析爬取的数据 Python爬虫基础(三):使用Selenium动态加载网页 Python爬虫基础(四):使用更方便的requests库 Python爬虫基础(五):使用scrapy框架 (1)Selenium是一个用于Web应用程序测试的工具。

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包