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

这篇具有很好参考价值的文章主要介绍了python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:通过python中直接get或者urlopen打开一些有延迟加载数据的网页,会抓取不到部分信息。

1. 命令行打开chrome,并开启调试端口(前提,找到chrome安装目录,找到chrome.exe所在路径,添加到环境变量中,例如我的是C:\Program Files\Google\Chrome\Application)

chrome.exe --remote-debugging-port=9527 --user-data-dir="D:\test"

remote-debugging-port指定远程调试端口(python调用的时候要用),user-data-dir指定用户数据目录,后续浏览器窗口关闭后,再次通过相同命令打开,则之前的登录信息等内容都还在,不用重复登录。可以通过这个方式浏览一些学习知识的网站(懂的都懂),但是不在浏览器留下历史记录(其实是留下了,只不过相当于在另一个浏览器里面了,所有相关数据都在指定的那个用户数据目录了)。
2. 下载浏览器驱动
不同浏览器有不同驱动,chrome下载地址为:http://chromedriver.storage.googleapis.com/index.html,或者这个https://registry.npmmirror.com/binary.html?path=chromedriver/,查看自己浏览器版本号,下载对应版本的驱动程序。
IE浏览器
说明:该浏览器为Windows系统自带,一般无需额外下载。
浏览器下载地址:https://www.microsoft.com/zh-cn/download/internet-explorer.aspx
驱动器下载地址:http://selenium-release.storage.googleapis.com/index.html

Microsoft Edge浏览器
浏览器下载地址:https://www.microsoft.com/zh-cn/edge
驱动器下载地址:https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver

Chrome(google)浏览器
浏览器下载地址:https://www.google.cn/chrome
驱动器下载地址:http://chromedriver.storage.googleapis.com/index.html

Firefox(火狐)浏览器
浏览器下载地址:http://www.firefox.com.cn
驱动器下载地址:https://github.com/mozilla/geckodriver/releases

Opera浏览器
浏览器下载地址:https://www.opera.com/zh-cn
驱动器下载地址:https://github.com/operasoftware/operachromiumdriver/releases

Safari浏览器
浏览器下载地址:https://www.apple.com.cn/safari
驱动器说明:该浏览器无需下载驱动,可以直接执行代码。
3. 通过python代码打开指定网页
前提:pip install selenium

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
options = Options()
options.add_experimental_option("debuggerAddress","127.0.0.1:9527")#用打开chrome指定的端口,此法也可打开远端的浏览器,ip地址换为远端地址即可
s = Service('C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe') #下载的驱动可执行文件路径
browser = webdriver.Chrome(service=s, options=options)
browser.get("https://www.baidu.com/")

以上即可通过浏览器打开百度页面。
4. selenium常用操作

 #全屏:
 browser.maximize_window()
 #设置分辨率:
 browser.set_window_size(1920,1080)  
 #获取cookie
 browser.get_cookies()
# 添加cookie
browser.add_cookie({'name':'test',"age":"18"})
 #刷新页面:
 browser.refresh() 
# 后退: 
 browser.back()  
 #前进:
 browser.forward() 
 # 网页标题
browser.title
# 当前网址
browser.current_url
# 浏览器名称
browser.name
# 网页源码
browser.page_source #这里的页面源码我们就可以用正则表达式、Bs4、xpath以及pyquery等工具进行解析提取想要的信息了。
#soup = BeautifulSoup(browser.page_source, 'html.parser')
#description = soup.select('meta[name="description"]')[0].attrs["content"]
#通过html id获取页面元素
element = browser.find_element(By.ID,'__NEXT_DATA__')
element.get_attribute('text') #get_attribute获取html节点属性的值,element其他属性见图2
#通过xpath
description = browser.find_element(By.XPATH, '//*[@name="description"]').get_attribute('content')#具体支持类型查看源码(图1),另有find_elements方法
#文本框输入文本
element.send_keys('2333')
#文本框清空
element.clear()
#鼠标左击
element.click()
#鼠标右击、双击、悬停
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(browser).context_click(element).perform()
ActionChains(browser).double_click(element).perform()
ActionChains(browser).move_to_element(element).perform()
#键盘操作:
input.send_keys(Keys.ENTER) #常见操作类型见图3
#执行js
browser.execute_script('alert("2333")')
#甚至可以通过js执行fetch请求(实战中发现有些数据是通过fetch获取的,如果直接拿到fetch执行结果,会方便很多)
browser.execute_script('return fetch("http://test.com").then(function(response) {return response.json()});')
#获取请求响应内容
browser_log = browser.get_log('performance')
events = [process_browser_log_entry(entry) for entry in browser_log]
events = [event for event in events if 'Network.responseReceived' in event['method']]
for event in events:
    if "response" in event["params"] and "getImages" in event["params"]["response"]["url"]:
        #读取response
        browser.execute_cdp_cmd('Network.getResponseBody', {'requestId': events[i]["params"]["requestId"]})
        print(event["params"]["response"]["url"])
# 关闭浏览器
browser.close()

5.另外据说通过selenium扩展包:seleniumwire也能获取到浏览器请求的响应,但是我自己没成功,有兴趣的自己尝试。只有引入操作不一样,其余操作同selenium:from seleniumwire import webdriver,获取response代码(我的是空的):

for request in browser.requests:
    if request.response:
        print(
            request.url,
            request.response.status_code,
            request.response.headers['Content-Type']
        )

6.自行百度browsermobproxy设置代理的方式据说也可以,但是我同样没成功
python selenium获取响应信息,python,爬虫,python,selenium,chrome,爬虫图1
python selenium获取响应信息,python,爬虫,python,selenium,chrome,爬虫图2
python selenium获取响应信息,python,爬虫,python,selenium,chrome,爬虫图3文章来源地址https://www.toymoban.com/news/detail-575392.html

到了这里,关于python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 用selenium去爬取大麦网页面的演唱会信息

    利用selenium.webdriver爬取大麦网页面演唱会信息,信息包括: 演唱会标题、时间、价钱、地点、图片、网址。 操作环境: 1. Window10;  2. python3.9;   3. PycharmIDE 第三方库版本: 1. selenium 4.1.1 2. requests 2.28.1 本实验主要利用Goggle chrome浏览器进行,其中 浏览器版本为118开头 ,可在设

    2024年02月02日
    浏览(46)
  • 使用selenium库模拟浏览器行为,获取网页的cookie值

    嘿,编程小伙伴们!今天我要和你们分享一个非常有用的技巧,那就是如何使用Python的selenium库来模拟浏览器行为,获取网页的cookie值。你可能会问,cookie是什么鬼?别担心,我会给你讲个明白!cookie就像是网站给你的一张通行证,它可以记录你在网站上的一些信息,比如登

    2024年02月07日
    浏览(52)
  • Python实战:用Selenium爬取网页数据

    网络爬虫是Python编程中一个非常有用的技巧,它可以让您自动获取网页上的数据。在本文中,我们将介绍如何使用Selenium库来爬取网页数据,特别是那些需要模拟用户交互的动态网页。 Selenium是一个自动化测试工具,它可以模拟用户在浏览器中的操作,比如点击按钮、填写表

    2024年02月06日
    浏览(47)
  • python基于Selenium方法爬取网页图片

    selenium是一个用于web应用程序的自动化测试工具,通过Selenium可以写出自动化程序,拟人在浏览器对网页进行操作。selenium可以编写出自动化程序,简化手动保存的部分。 requests库可以向第三方发送http请求,是一个用于网络请求的模块,通常以GET方式请求特定资源,请求中不应

    2024年02月03日
    浏览(61)
  • Python灰帽编程——网页信息爬取

    1.1 requests 模块 requests 模块:主要是用来模拟浏览器行为,发送HTTP 请求,并处理HTTP 响应的功能。 requests 模块处理网页内容的基本逻辑: 定义一个URL 地址。 发送HTTP 请求。 处理HTTP 响应。 1.1.1 模块中的请求方法 请求方法 说明 requests.get() 常规的请求方法 (GET 方法) reque

    2024年02月07日
    浏览(41)
  • Python爬虫|使用Selenium轻松爬取网页数据

    1. 什么是selenium? Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持的浏览器包括IE,Firefox,Safari,Chrome等。 Selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用

    2024年02月04日
    浏览(58)
  • python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(83)
  • Python使用Selenium Webdriver爬取网页所有内容

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

    2023年04月08日
    浏览(48)
  • 通过 selenium 获得 Chrome 浏览器中 Console 输出的数据信息

    在访问一些网站的时候,地址会发生变化,requests有时候不能正确获取到地址,此方法 通过 selenium 获得 Chrome 浏览器中 Console 输出的数据信息 方法应该都知道 此方法可适用获取一些其他调试方法

    2024年02月04日
    浏览(88)
  • 华纳云:Python中如何使用Selenium爬取网页数据

    这篇文章主要介绍“Python中如何使用Selenium爬取网页数据”,在日常操作中,相信很多人在Python中如何使用Selenium爬取网页数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中如何使用Selenium爬取网页数据”的疑惑有所帮助!接下

    2024年02月07日
    浏览(69)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包