requests或selenium获取网页内容不全问题(非异步加载)

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

最近用python做脚本的时候,发现了一个问题,就是获取的网页并不全。可能原因之一是页面内容过大,无法加载全部到内存中
下面的解决方法只针对静态加载页面(有的网页是动态加载数据,需要查看对应的js请求或者用selenium来获取就好)。
解决方法为放入文件里,再读取即可

使用selenium,代码如下

browser = webdriver.Chrome(service=webdriver_service, options=option)
browser.get(url)
browser.implicitly_wait(10) # 等待页面加载完毕,最多等待10s
# print(browser.page_source)
# str(browser.page_source)
soup = BeautifulSoup(browser.page_source,"lxml")
soup.find(xxxx)

soup.find(xxxx) 获取不到,但是在网页上F12查找元素是有的。于是查看network,但是并未发现有ajax异步数据,只有静态数据,于是打印页面源码,print(browser.page_source),发现获取的 html 页面内容并不全,并且每次获取的html 内容不一样,每次都是获取到一半就没有了。转成str打印也是一样的效果。于是怀疑是selenium的问题,又换用requests

source_html = requests.get(url)
soup = BeautifulSoup(browser.source_html,"lxml")
soup.find(xxxx)

还是一样的效果,还是找不到。
以为是页面没加载完毕,sleep(3) 睡眠3s依旧不行
搜索后终于在一个博客找到些线索,于是用下列方式,问题就解决了.
把获取到的页面内容保存到文件里,再读取,就拿到了。可能原因是页面过大,python的输出限制长度。

tmp_html = "temp.html"
source_html = requests.get(url)
with open(tmp_html, "w+", encoding="utf-8") as f:
    f.write(source_html.text)
    f.seek(0)
    html_handle = f.read()
soup = BeautifulSoup(html_handle,"lxml")
soup.find(xxxx)

如果文件过大无法写入,可使用requests.iter_content写

with open(filename, 'wb') as fd:
    for chunk in r.iter_content(chunk_size):
        fd.write(chunk)

这次soup.find(xxxx)找到了,并且文件里也是完整的html内容。
如果文件过大,soup = BeautifulSoup(html_handle,“lxml”) Beautifulsoup无法加载,可以使用使用SAX解析器

参考链接

requests.get()获取信息不完整
使用BeautifulSoup加载大型xml文件文章来源地址https://www.toymoban.com/news/detail-824322.html

到了这里,关于requests或selenium获取网页内容不全问题(非异步加载)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器

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

    2024年02月16日
    浏览(81)
  • selenium常见问题(网页缩放、滑动,元素获取不到......)

    解决办法: 方法一: element = driver.find_element_by_xpath(\\\"表达式\\\") driver.execute_script(\\\"arguments[0].click();\\\", element) 方法二: element = driver.find_element_by_xpath(\\\'表达式\\\') webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform() 方法一 使用js脚本直接操作: js = \\\"var q=document.getElementById

    2024年02月13日
    浏览(42)
  • selenium爬取网页内容,对网页内容进行点击

    所需要的库 首先明确所要爬取的网页,选择调用方法,增加无界面模式的无头参数,然后调用,获取网址,使页面放大,为最大化窗口 获取数据运用XPATH函数,将获取的数据作为item,运用XPATH函数获取,   模仿人点击下一页,运用 for语句,每10个一点,停留5秒 同样寻找下一

    2024年01月17日
    浏览(67)
  • selenium+requests 实现网页跳转登录及爬取

    本项目设立目的是为了通过脚本,实现学校体育场馆的“秒约”。便于同学瞬间抢到热门时间段的体育场 。 服务器工作峰值时浏览器可能会卡死,因此例如selenium等需要加载浏览器界面的库可能会降低效率 。 采用requests库直接向服务器发送请求,效率更高。 通过selenium库模

    2024年02月04日
    浏览(47)
  • Python+Requests模块获取响应内容

    响应包括响应行、响应头、响应正文内容,这些返回的响应信息都可以通过Requests模块获取。这些 获取到的响应内容也是接口测试执行得到的实际结果。 获取响应行 获取响应头 获取其它响应信息 代码示例: 依据不同响应正文内容的情况,Requests模块有四种不同的处理方式

    2024年02月16日
    浏览(38)
  • java获取request请求头内容

    注意一下 request 和 httpServletRequest 的类型

    2024年02月12日
    浏览(45)
  • 使用Selenium抓取网页动态内容

    Selenium 是一个自动化测试工具,支持多种浏览器,包括 Chrome、Firefox、Edge 等,具有强大的浏览器自动化能力,可以用于Web应用程序的自动化测试、数据挖掘等领域。Selenium的主要特点有: 支持多种浏览器 Selenium支持多种浏览器,包括Chrome、Firefox、Edge、Safari等,可以满足不同

    2023年04月25日
    浏览(79)
  • 自动化测试: Selenium 自动登录授权,再 Requests 请求内容

    Selenium 自动登录网站、截图及 Requests 抓取登录后的网页内容。一起了解下吧。 Selenium: 支持 Web 浏览器自动化的一系列工具和库的综合项目。 Requests: 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。   Selenium 实现,相当于模拟用户手动打开浏览器、进行登录的过程。

    2024年01月21日
    浏览(52)
  • 使用Python和Selenium抓取网页内容

    采集动态网页是困扰许多人的难题,不妨使用 Python 和 Selenium抓取网页数据。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 你是否对从网站提取数据感兴趣,但发现自己被网络抓取的复杂性所困扰?不要害怕,我们在这篇文章中将展示如何利用 Selenium 和

    2024年02月07日
    浏览(72)
  • 模拟动态加载网页数据Selenium,Puppeteer,WebDriver,Requests-HTML

    模拟动态加载网页数据,你可以使用以下工具: Selenium:Selenium是一个用于Web应用程序测试的工具,它可以模拟用户在浏览器上的操作,包括点击、滚动、填写表单等。因此,它也可以用于爬取那些动态加载内容的网页。Selenium支持多种浏览器,并且提供了多种编程语言的接口

    2024年04月25日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包