如何利用Python监控别人的网站

 更新时间:2023年05月18日 08:37:02   作者:虚坏叔叔  
这篇文章主要为大家详细介绍了如何利用Python实现监控别人的网站,这样还可以详细了解你的竞争对手网站,感兴趣的小伙伴可以跟随小编一起学习一下

场景

可能是你用不到,但是我遇到了这样一个问题,就是我想详细了解我的竞争对手的网站(电商类)销售情况和新品上架情况,但是我总不至于像盯盘一样,在电脑或者手机上一直看着这个站吧!

于是我想到用一个脚本来检测,脚本的功能是如果发现对手出售了商品,就发送我售出商品的名称,价格;如果是新上线了商品,就要邮件告诉我新品的名称,价格,这对于我分析对手的销量和趋势,然后在我的店铺中择优上货是有一定帮助作用的。

另外,这个脚本作用不仅仅如此,你也可以修改一下,包括但不限于监控自己的抖音粉丝上升趋势、其他事件新闻进展、甚至是当前热点等等。

现成的产品

当然,我前面的想法在现实中每个公司、店铺都用得到,而且有人专门开发程序为此而服务,比方说比较好的网页监控工具:Visualping、Distill Web Monitor、Wachete等,他们都是做这个的也都很专业,但是要想深度使用,就要收费了;

国内也有类似的产品,我尝试过。不过也有限制,每天1个网页变化只给10封邮件,申请再多也要收费!

所以吧,自己写来自己用吧!

代码

import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText

# 网站 URL
url = "https://"

# 发送邮件的参数
sender = '你的发件人邮箱'
receiver = '你的收件人邮箱'
smtp_server = 'smtp.xxx.com' # 发件人邮箱的 SMTP 服务器地址
smtp_port = 465 # 发件人邮箱的 SMTP 端口
username = '你的发件人邮箱'
password = '你的发件人邮箱密码'

def send_email(subject, body):
    # 创建 MIMEText 邮件
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = sender
    msg['To'] = receiver

    # 发送邮件
    with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
        server.login(username, password)
        server.sendmail(sender, receiver, msg.as_string())

def get_product_info(product_url):
    # 获取商品信息
    response = requests.get(product_url)
    soup = BeautifulSoup(response.text, 'html.parser')
    title = soup.find('h1', class_='h3').text
    price = soup.find('span', class_='h2').text
    stock = soup.find('span', class_='js-product-stock').text
    return (title, price, stock)

def check_product_sold_out(product_url):
    # 检查商品是否已售出
    response = requests.get(product_url)
    soup = BeautifulSoup(response.text, 'html.parser')
    if soup.find('div', class_='product-sold-out'):
        return True
    else:
        return False

# 定期检查商品
while True:
    # 获取网页内容
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    # 查找商品列表
    product_list = soup.find('div', class_='js-product-list')

    # 检查每个商品是否售出
    for product in product_list.find_all('a', class_='product-card'):
        product_url = product['href']
        product_title = product.find('h2').text
        if check_product_sold_out(product_url):
            # 商品已售出,发送邮件通知
            subject = f'商品已售出:{product_title}'
            body = f'商品名称:{product_title}\n'
            send_email(subject, body)
        else:
            # 商品未售出,检查是否为新商品
            try:
                # 尝试获取商品信息,如果获取失败则说明是新商品
                product_title, product_price, product_stock = get_product_info(product_url)
            except:
                # 新商品,发送邮件通知
                subject = f'新商品上架:{product_title}'
                body = f'商品名称:{product_title}\n库存:{product_stock}\n价格:{product_price}\n'
                send_email(subject, body)

    # 等待一段时间后再次检查
    time.sleep(300)

解释:这个就是网店的监控程序,新品上架,商品售出会像间谍一样及时通知你!

再赠送一个:

import requests
import hashlib
import time
import smtplib
from email.mime.text import MIMEText

url = 'https://'

def get_hash(url):
    response = requests.get(url)
    return hashlib.sha256(response.content).hexdigest()

def send_email(content):
    sender = ''
    receiver = ''
    password = ''
    smtp_server = ''
    smtp_port = 465

    message = MIMEText(content)
    message['From'] = sender
    message['To'] = receiver
    message['Subject'] = 'Website Change Alert'

    server = smtplib.SMTP_SSL(smtp_server, smtp_port)
    server.login(sender, password)
    server.sendmail(sender, receiver, message.as_string())
    server.quit()

current_hash = get_hash(url)
while True:
    new_hash = get_hash(url)
    if new_hash != current_hash:
        send_email('Website content has changed.')
        current_hash = new_hash
    else:
        time.sleep(30)

解释:这个代码很简单,比较的是网页哈希,只要有变化就会邮件通知,可用于任何场景!

如何使用

上面的代码是python的,修改后可以直接使用。后台运行的方法:

nohup python3 jiankong.py > output.log 2>&1 &

到此这篇关于如何利用Python监控别人的网站的文章就介绍到这了,更多相关Python监控网站内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 思考分析Python运算中 a+=b 和 a=a+b是否相等

    思考分析Python运算中 a+=b 和 a=a+b是否相等

    这篇文章主要为大家介绍了Python运算中a+=b和a=a+b是否相等及原理思考分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 利用python实现全屏爱心雨向喜欢的人表白

    利用python实现全屏爱心雨向喜欢的人表白

    马上520了,教大家用Python做一个下爱心雨的特效,这篇文章主要给大家介绍了关于利用python实现全屏爱心雨向喜欢的人表白的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Linux系统上Nginx+Python的web.py与Django框架环境

    Linux系统上Nginx+Python的web.py与Django框架环境

    这篇文章主要介绍了Linux系统上Nginx+Python的web.py与Django框架环境,文中使用fastcgi作为连接,需要的朋友可以参考下
    2015-12-12
  • python递归法解决棋盘分割问题

    python递归法解决棋盘分割问题

    这篇文章主要为大家详细介绍了python递归法解决棋盘分割问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 详解Python变量与注释高级用法

    详解Python变量与注释高级用法

    变量与注释是表达作者思想的基础,他们对代码质量的贡献母庸质疑,这篇文章主要介绍了Python变量与注释高级用法,需要的朋友可以参考下
    2022-08-08
  • 基于Matplotlib 调用 pyplot 模块中 figure() 函数处理 figure图形对象

    基于Matplotlib 调用 pyplot 模块中 figure() 函数处理 figure图形对象

    这篇文章主要介绍了基于Matplotlib 调用 pyplot 模块中 figure() 函数处理 figure图形对象,matplotlib.pyplot模块能够快速地生成图像,但如果使用面向对象的编程思想,我们就可以更好地控制和自定义图像,下面就来详细介绍其内容,需要的朋友可以参考下
    2022-02-02
  • Python图像处理之模糊图像判断

    Python图像处理之模糊图像判断

    这篇文章主要为大家详细介绍了Python图像处理中的模糊图像判断的实现,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-12-12
  • Python中subprocess.run()执行命令、检查状态与结果处理深入理解

    Python中subprocess.run()执行命令、检查状态与结果处理深入理解

    这篇文章主要介绍了Python中subprocess.run()执行命令、检查状态与结果处理的相关资料,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2025-04-04
  • Python中类的创建和实例化操作示例

    Python中类的创建和实例化操作示例

    这篇文章主要介绍了Python中类的创建和实例化操作,涉及Python面向对象程序设计中类的定义、实例化、方法调用等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • python比较两个列表大小的方法

    python比较两个列表大小的方法

    这篇文章主要介绍了python比较两个列表大小的方法,涉及Python针对列表的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论