initial commit

This commit is contained in:
2023-02-18 07:39:08 +01:00
commit e63ab7b77e
63 changed files with 7122 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
from os import PathLike
from pathlib import Path
import re
from playwright.sync_api import sync_playwright, Browser
from contextlib import contextmanager
@contextmanager
def run_browser(data_dir: PathLike, extension_path: PathLike) -> Browser:
with sync_playwright() as pw:
with pw.chromium.launch_persistent_context(
user_data_dir=data_dir,
headless=False,
args=[
f"--disable-extensions-except={extension_path}",
f"--load-extension={extension_path}",
],
) as browser:
yield browser
def find_sales_performance(browser: Browser, url: str) -> dict:
with browser.new_page() as page:
page.goto(url)
text = page.wait_for_selector("#h10-product-score").inner_text()
amazon_id = re.search(r'/dp/([^?]+)', url).group(1)
score = float(re.search(r"(\d+\.?\d*)", text).group(1))
try:
sales = int(re.search(r"Sales\s*(\d+[,.]?\d*)", text, re.MULTILINE).group(1).replace(',', ""))
except:
sales = -1
return {
'amazon_id': amazon_id,
'sales': sales,
'score': score,
}
extension_path = Path(r"~/Desktop/amazon").expanduser().resolve()
data_dir = Path(r'~/Desktop/amazondemo').expanduser()
def main():
urls = [
"https://www.amazon.co.uk/dp/B07B9G7V3P?psc=1",
]
with run_browser(data_dir=data_dir, extension_path=extension_path) as browser:
for url in urls:
perf = find_sales_performance(browser=browser, url=url)
print(perf)
if __name__ == "__main__":
main()