网络抓取亚马逊价格的麻烦

时间:2020-04-07 20:06:15

标签: python web-scraping anaconda

我正在尝试创建一个Python脚本,当使用BeautifulSoup亚马逊价格下降时,该脚本将通过电子邮件通知我。我的问题是,通过将convert_price设置为大于价格来测试代码是否有效时,我仍然没有收到电子邮件。

该脚本在运行时不会给我任何错误。我试图重新安装Anaconda / Python,更改Amazon URLS,查看smtplib的文档,并通过StackOverFlow查看以前解决的尝试。

我不会将其用于非法目的。我只是想学习如何抓网。

我正在使用此人的教程:https://www.youtube.com/watch?v=Bg9r_yLk7VY

我有

  import requests
    from bs4 import BeautifulSoup
    import smtplib

    URL = 'https://www.amazon.com/Sony-Full-Frame-Mirrorless-Digital-Camera/dp/B00FRDUZXM'

    headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4101.0 Safari/537.36 Edg/83.0.474.0'}

    def check_price():
        page = requests.get(URL, headers=headers)

        soup = BeautifulSoup(page.content, 'html.parser')

        title = soup.find(id="productTitle").get_text()
        price = soup.find(id="priceblock_ourprice").get_text()
        converted_price = float(price[0.5])

        if(converted_price < 1.700):
            send_mail()

        print(converted_price)
        print(title.strip())

    def send_mail():
        server = smtplib.SMTB('smtp.gmail.com', 587)
        server.ehlo()
        server.starttls()
        server.ehlo()

        server.login('email@gmail.com', 'app password')

        subject = 'Price fell down!'
        body = 'check amazon!!!'

        msg = f"Subject: {subject}\n\n{body}"

        server.sendmail(
            'email@gmail.com',
            msg
        )
        print('HEY EMAIL SENT. ')

        server.quit()

        check_price()

1 个答案:

答案 0 :(得分:0)

尝试使用其他HTML解析器。我没有测试过,但是我认为这是解决方案。硒库具有html解析器,或者您可以使用html.parser库。希望这会有所帮助!