如何根据产品选择(例如大小,颜色,包装)刮擦信息



我上周成功地爬了1600页。但是被告知,返回的数据中很大一部分对于拉出的数据是不正确的。要看价格,我如何能够收集每个选择的正确价格?看来我的逻辑正在提取它找到的第一个价格。

我正在尝试尽早尝试解析页面代码中可用的每个组合,但这总是无法准确地返回,我搬到了1个价格,但似乎我使用的大多数测试页面都不是选项特定的定价,因此我忽略了在布局和功能上与URL的很大一部分。目前,唯一有效的是我拥有的代码。

https://stackoverflow.com/questions/55925202/why-does-this-code-generate-multiple-files-i-want-1-file-with-all-entries-in-it/55925220#55925220

这很好,并且正如我们抓取的任何项目页面所预期的那样,没有任何选择。

https://stackoverflow.com/questions/55925202/why-does-this-code-generate-multiple-files-i-want-1-file-with-all-entries-in-it/55925220#55925220

整个代码已经在此处发布了最终版本。

我不需要完整的示例,我只需要一些指导,以便为了自动选择产品选择以获取正确的价格,选择组合

这是一个示例页面,它是一个没有提取正确价格的示例页面: https://www.dickssportinggoods.com/p/berkley-vanish-fluorocarbon-fishis-lin-15bkyuvnsh25010clfli/15bkyuvnsh250101010clfli

当您开始进行选择时,价格会更改,如果您选择" 6"磅和" 2000码",价格将会更改为$ 75.99,那么如果您将其更改为" 250码",则价格将更改为$ 12.99

由于我们有时需要拉出特定的磅和长度,所以我需要专注于什么才能系统地提取所需的选择的正确价格?

是否有一种方法可以在每个页面上拉出所有组合,以免一遍又一遍地击中相同的页面?

我在这里查看了一些链接和其他似乎处理此链接的链接,但是如果我想完成的事情甚至是同一件事,那么几乎没有丢失。

只是寻找有关从哪里开始或尝试什么的指导。

在使用零工时,如果您想要所有组合,则需要确保在脚本内部包含所有条件,据您所知,这是完全不合理的。

我将使用两种不同的解析器,进行一般刮擦和硒的废料,以进行更具体的刮擦。使用Selenium,您可以在脚本中输入特定组合,并在页面上分析价格:

import requests
import urllib3
import pandas as pd
import numpy as np
import os
import traceback
import io
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

chrome_options = Options()
#chrome_options.add_argument('--headless')
#chrome_options.add_argument('--hide-scrollbars')
#chrome_options.add_argument('--disable-gpu')
#chrome_options.add_argument("--log-level=3")  # fatal
url = 'https://www.dickssportinggoods.com/p/berkley-vanish-fluorocarbon-fishing-line-15bkyuvnsh25010clfli/15bkyuvnsh25010clfli'
browser = webdriver.Chrome(
    executable_path=r'C:UsersedekioDocumentschromedriver.exe', chrome_options=chrome_options)
browser.get(url)
pounds = browser.find_element_by_link_text('14').click()
length = browser.find_element_by_link_text('250 yds').click()
price = WebDriverWait(browser, 60).until(
    EC.presence_of_element_located((By.ID, "ProductInfoPrice_740978")))
price_text = price.get_attribute('value')
print(price_text)

输出:

14.99

您可以看到,我们可以使用Selenium将特定值传递到框中,从而获得您想要的确切价格。但是,上面的脚本并非全是包容性,但应该是一个很好的起点。

最新更新