【问题标题】:how to detect changes on website? python web scraping如何检测网站上的变化? python网页抓取
【发布时间】:2021-04-17 23:42:51
【问题描述】:

我开始为一个鞋类网站做一个监视器 python。现在我想知道是否有办法知道网站何时更新。例如:如果可用鞋码发生变化 -> 将 webhook 发送到我的 discord

我不知道如何检测网站上的更改。请帮助我。如果您有任何想法,请告诉我:)

img webhook discord

from dhooks import Webhook, Embed
import requests
import bs4
from bs4 import BeautifulSoup
import lxml

url = "https://en.aw-lab.com/women/shoes/new-arrivals-AW_10008AAQB.html?cgid=women_shoes_newin&dwvar_AW__10008AAQB_color=5011614"

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}

res = requests.get(url, headers=headers)
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml")
img_shoes = "https://en.aw-lab.com/dw/image/v2/BCLG_PRD/on/demandware.static/-/Sites-awlab-master-catalog/default/dwd9415a8e/images/large/5011614_0.jpg?sw=843"
size = soup.select(".b-size-selector__item-0")
array_size = []

url_shoes = "[ADIDAS SUPERSTAR BOLD](" + url + ")"

embed = Embed(
    description=url_shoes,
    color=0x5CDBF0,
    timestamp='now'
)

for sizes in size:
    get_sizes = sizes.getText()
    array_size.append(get_sizes.strip())


embed.add_field(name="Size", value=('\n'.join(map(str, array_size))))

embed.set_thumbnail(img_shoes)

hook.send(embed=embed)

【问题讨论】:

  • 如果您正在监控,您应该将收集到的数据保存在数据库中。您可以创建一个名为 shoes(或其他)的表并添加一些列,例如 id、名称、品牌、网站链接、商店等。您将创建另一个表并为鞋子添加一个 ForeignKey,其中包含价格和时间戳。每次您的脚本运行时,它都会添加另一条记录,如果价格小于您上次发送信号时的价格。要每 5 分钟自动运行一次脚本,您可以使用 cron。
  • 你可能不应该分享你的 webhook api-details。那些很敏感......
  • 谢谢你 jlaur 我已经删除了我的 api-details。

标签: python web-scraping beautifulsoup python-requests


【解决方案1】:

您可以使用 hashlib 模块计算页面的校验和,保存它然后再次计算它以检查它是否改变。注意:任何细微的变化都会改变校验和!

import hashlib

# ...

checksum = hashlib.sha256(res.text.encode('utf-8')).hexdigest()

# save it to a txt file as a comparison for the next accesses

【讨论】:

  • 我会尝试使用 haslib。可以在页面上取消 aera 吗?仅检测 aera 的变化
  • 使用 bs4 或 soupsieve 访问子节点和散列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
相关资源
最近更新 更多