关于爬取网页的时候,抓不到元素,报没有这样元素的错误

本文探讨了在网页爬取过程中遇到的元素抓取失败问题,重点在于并非窗口切换问题,而是解析执行层面的技巧。作者揭示了使用execute_script获取DOM全量HTML的意外收获,以及如何解决元素定位失效时的思考路径。
摘要由CSDN通过智能技术生成

**

关于爬取网页的时候,抓不到元素,报没有这样元素的错误

**
前言:
这里是先抓到了第一页的信息,然后通过构造的网址进入了第二个界面,然后出现抓不到第二个网页的元素问题

'''
**网上的解决方式是:**
打开了新的窗口句柄,需要切换到第二个窗口,才能抓到
我这里不是这个问题


driver可以有多个window窗口,在浏览器中显示为多个标签,

比如点击一个链接 网易,会打开一个新的窗口
webdriver类中的所有方法有一个前提条件是:都作用于某一window handle
window handle不会自动切换,如果打开了一个新的窗口,想在新窗口上获取某一元素,需要先手动切换window handle,driver.switch_to.window(xxx_handle)
用driver.window_handles可以获取所有窗口句柄
窗口句柄是浏览器拥有的,元素没有窗口句柄

driver的current handle也不会自动切换,如果current window handle被关闭,那么current_handle这个值就取不到了,会报异常,需要手动调用driver.switch_to.window 来显示切换。
如果元素定位失败,要检查一下是不是打开了新的窗口,如果是,则需要切换window handle,因为它不会自动切换
'''

以下是切换:

for handle in browser.window_handles:				#方法二,始终获当前最后的窗口
	browser.switch_to_window(handle)
	browser.find_element_by_xpath("//div[@id='body']/div[2]/div/div/ul[2]/div/a").click()

然后继续操作

我这测试的时候,两个句柄都一样,意味着没有打开新的窗口,就直接覆盖原来的窗口了,哈哈
那么来了,是我抓的原数据就不对
后来发现直接使用

text=driver.execute_script("return document.documentElement.outerHTML")

从这个里面提取想要的
这个打印出来是不对应的,但是正常使用xpath是可以的,就离谱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Python 中,可以使用第三方库来爬取网页数据。常用的爬虫库有 Requests 和 Beautiful Soup。 使用 Requests 库,可以方便地发送 HTTP 请求并获取网页内容: ``` import requests url = 'https://www.example.com' response = requests.get(url) content = response.text ``` 使用 Beautiful Soup 库,可以方便地从网页内容中提取信息: ``` from bs4 import BeautifulSoup soup = BeautifulSoup(content, 'html.parser') print(soup.prettify()) ``` 这样,就可以使用 Python 爬取网页数据了。不过,请注意爬虫的道德和法律问题,不要爬取不该爬取的网页。 ### 回答2: Python是一种强大的编程语言,也是一个优秀的工具,用于爬取网页数据。使用Python进行网页数据爬取相对容易,并且有许多库和框架可以帮助我们完成这项任务。 首先,我们可以使用Python中的requests库向网页发送请求,并获取网页的内容。通过指定网页的URL,我们可以获取网页的HTML代码,以便后续的数据处理和解析。 接下来,我们可以使用Python中的BeautifulSoup库对网页内容进行解析和提取。BeautifulSoup可以将HTML文档转换为Python对象,从而使我们能够轻松地遍历和检索页面的各种元素。使用BeautifulSoup,我们可以从网页中提取出需要的数据,例如标题、正文、链接等等。 此外,Python中还有其他一些非常有用的库,如Scrapy和Selenium。Scrapy是一个高级的爬虫框架,它提供了更强大的功能和更高的定制性,可以用于处理大规模的数据爬取任务。Selenium是一个用于自动化网页操作的工具,可以模拟用户的行为,并从动态网页中提取数据。 在爬取网页数据时,还需要注意一些道德和法律方面的问题。我们应该尊重网站的隐私政策和使用协议,并避免对目标网站造成过大的负担。另外,在爬取数据时,我们还需要注意数据的正确性和合法性,以免因为使用了错误或非法的数据而遭受法律风险。 总而言之,使用Python进行网页数据爬取是一项非常有用的技能,它可以帮助我们从互联网上获取大量的有用信息。但是,在使用Python进行网页数据爬取时,我们应该遵循良好的道德规范和法律法规,保证数据的正确和合法使用。 ### 回答3: 爬取网页数据是指使用Python编程语言来自动获取互联网上的数据。Python是一种简洁、易读且功能强大的编程语言,因此被广泛用于数据爬取。 对于Python来说,爬取网页数据的过程相对简单,可以通过以下几个步骤来实现: 1. 安装必要的库:Python有许多第三方库可用于爬取网页数据,例如Beautiful Soup、Requests和Selenium等。可以使用pip命令来安装这些库,例如 pip install BeautifulSoup4。 2. 发送HTTP请求:使用Python的请求库(如Requests库)向目标网页发送HTTP请求,并获取响应。通过这个库,我们可以设置请求的headers、cookies、参数等信息。 3. 解析页面:使用Beautiful Soup或其他HTML解析库,对获取到的网页数据进行解析,提取所需的信息。可以通过选择器、方法或正则表达式来定位和提取指定的数据。 4. 存储数据:将获取到的数据保存到本地文件、数据库或其他存储介质中,以便后续的处理和分析。 需要注意的是,爬取网页数据时还应遵循相关法律法规和道德准则,避免非法获取和使用数据,保护网站的合法权益和用户的隐私。 总之,Python提供了丰富的库和工具来实现网页数据的爬取,开发者可以根据自己的需求和技术水平选择合适的方法和工具来实现。爬取网页数据的Python编程是一项有趣且实用的技能,可以为我们提供大量的数据资源和信息,辅助我们进行数据分析、机器学习等各种任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

略略略气气你

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

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

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

打赏作者

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

抵扣说明:

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

余额充值