得来全不费功夫,使用Python爬虫自动采集Cookies、URL等网页数据

如何使用Python爬虫和selenium从网页收集Cookies、URL数据

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

有时,你可能需要从网页上获得特定的信息,并且需要在很短的时间内从网页上收集海量的数据。所以,每次都手动搜索数据,效率是非常低的,需要大量的时间和人力,工作也会非常枯燥。那么,怎样才能使这个工作自动化呢?

利用Python的库是最佳选择,完全可以让Python来做这些工作!

仅仅使用简单的代码,我们就可以用http请求获取浏览器Cookie。

另外,我们还将使用Selenium采集网站的数据。

从Cookie开始

为了从网站获取Cookie,我们可以使用 Python 的 request 包来获取。

import requests
response = session.get('http://google.com')
print(session.cookies.get_dict())

可以得到如下输出信息:

{'1P_JAR': '2023-03-15-10', 'AEC': 'ARSKqsKcTPjv1-XKnWKF53IUL7c9KaIfeMugVnut9UOnkVNzviBxoe9S-gA', 'NID': '511=OA7Bf8IvPENQvvH6pCLBPeKvB3-8omEfAii1a3DGoTAngBeOxm9LkMCm2iQOy921P0GPoMjZW4xAmKqrI-OIf3JLoVJX-j5RrFCfDWDteAtsZ_pqubflcqo71mnrM8vdDBZLkqj-rYBO2KfiSdl6n1pWgFiDVPkFY1fwaQQEBqI'}

这里,你还能得到诸如过期时间、域名、路径等信息:

response.headers
{'Date': 'Wed, 15 Mar 2023 10:50:00 GMT', 'Expires': '-1', 'Cache-Control': 'private, max-age=0', 'Content-Type': 'text/html; charset=ISO-8859-1', 'P3P': 'CP="This is not a P3P policy! See g.co/p3phelp for more info."', 'Content-Encoding': 'gzip', 'Server': 'gws', 'Content-Length': '7634', 'X-XSS-Protection': '0', 'X-Frame-Options': 'SAMEORIGIN', 'Set-Cookie': '1P_JAR=2023-03-15-10; expires=Fri, 14-Apr-2023 10:50:00 GMT; path=/; domain=.google.com; Secure, AEC=ARSKqsKcTPjv1-XKnWKF53IUL7c9KaIfeMugVnut9UOnkVNzviBxoe9S-gA; expires=Mon, 11-Sep-2023 10:50:00 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax, NID=511=OA7Bf8IvPENQvvH6pCLBPeKvB3-8omEfAii1a3DGoTAngBeOxm9LkMCm2iQOy921P0GPoMjZW4xAmKqrI-OIf3JLoVJX-j5RrFCfDWDteAtsZ_pqubflcqo71mnrM8vdDBZLkqj-rYBO2KfiSdl6n1pWgFiDVPkFY1fwaQQEBqI; expires=Thu, 14-Sep-2023 10:50:00 GMT; path=/; domain=.google.com; HttpOnly’}

你可以通过尝试不同的功能来探索更多的输出。

还可以使用browser-cookies包来获得更多的输出。

使用此命令进行安装:

pip install browser-cookie3

现在,我们可使用以下代码片断来获取Cookie。

import browser_cookie3
import requests
cj = browser_cookie3.chrome(domain_name='www.bitbucket.com')
r = requests.get(url, cookies=cj)
get_title(r.content)

将得到如下结果:

'richardpenman / home — Bitbucket’

你还可以获得更多关于Cookies的信息,如过期时间、价值、描述等。

使用Selenium采集数据

我们可以使用Selenium来采集网站的任何数据。Selenium是一个开源的庞大项目,包括一系列工具和库,旨在支持浏览器自动化。

安装Selenium

pip3 install selenium

现在,我们将使用Selenium来获取数据,首先导入以下Python包:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

这里,我们使用Chrome浏览器来获取数据。首先,程序在后台打开浏览器,并点击想要收集数据的网站URL。

driver_exe = 'chromedriver'
options = Options()
options.add_argument("--headless") 
options.add_argument("--start-maximized") #用网页最大化模式打开浏览器
options.add_argument("--no-sandbox") #绕过系统安全设置
options.add_argument("--disable-dev-shm-usage") #取消资源限制
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(driver_exe, options=options)
driver.get(“https://www.google.com”)

现在,可以使用selenium的不同方法,通过Tag、class、url等获取数据。

elements = driver.find_elements(By.TAG_NAME, ‘a’)

这将得到所有带有标签"a"的元素。

而后,就可以运行自定义逻辑了,与其他数据进行比较,或者像普通Python一样,对数据进行任何进一步的处理。下面是一个例子。

for element in elements:
  url_elem = element.get_attribute("href") # 获取url链接
  if url_elem == <Compare with Other URL>:
  # 业务代码

将所有代码结合起来

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By


driver_exe = 'chromedriver'
options = Options()
options.add_argument("--headless") 
options.add_argument("--start-maximized") #open Browser in maximized mode
options.add_argument("--no-sandbox") #bypass OS security model
options.add_argument("--disable-dev-shm-usage") #overcome limited resource problems
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(driver_exe, options=options)

driver.get(“https://www.google.com”)
elem = driver.find_elements(By.TAG_NAME, ‘a’)

for ele in elem:
    url_elem = ele.get_attribute("href")
    if url_elem == <compare URL>:
        logging.debug('URL is found')
        break

推荐书单

《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=N5F7https://item.jd.com/13284890.html

精彩回顾

《5个不可不知的Python自动化脚本利器》

《流式计算来袭,使用Python和PySpark处理流式数据》

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

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

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

《使用Python和Selenium抓取网页内容》

微信搜索关注《Python学研大本营》,加入读者群

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值