【发布时间】:2021-03-03 04:13:59
【问题描述】:
我从给定的 URL 中抓取了 eBay 的产品信息,例如名称、价格、描述等。但是,如果有多个 URL,比如一组 10 个 URL,我如何确保所有网站都被抓取?这是我的网页抓取 eBay 产品的代码。 webscraper.py
import time
from selenium import webdriver
from bs4 import BeautifulSoup
from webdriver_manager.chrome import ChromeDriverManager
def scrape_products():
website_address = ['https://www.ebay.co.uk/itm/The-Discworld-series-Carpe-jugulum-by-Terry-Pratchett-Paperback-Amazing-Value/293566021594?hash=item4459e5ffda:g:yssAAOSw3NBfQ7I0',
'https://www.ebay.co.uk/itm/Edexcel-AS-A-level-history-Germany-and-West-Germany-1918-89-by-Barbara/293497601580?hash=item4455d1fe2c:g:6lYAAOSwbRFeXGqL']
options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
browser = webdriver.Chrome(ChromeDriverManager().install(), options=options)
for web in website_address:
browser.get(web)
time.sleep(2)
product_price_raw_list = browser.find_elements_by_xpath('//*[@id="vi-mskumap-none"]')
product_name_raw_lst = browser.find_elements_by_xpath('//*[@id="itemTitle"]')
#rest of the code
if __name__ == "__main__":
scrape_products()
这里的代码刮掉了first website address而不是第二个?为什么它不抓取第二个网站地址?我也尝试将它附加到一个空列表中,但它仍然没有用。我无法弄清楚。请帮忙!谢谢。
【问题讨论】:
-
如果将
browser的创建移动到循环内呢? -
@TimRoberts 仍然显示第一个网站,而不是第二个。
-
如果我尝试运行此代码,它可以正常工作。也许您的其余代码中存在某些问题。
-
@RhysFlook 是的,代码工作正常,虽然它没有抓取第二个地址(或者如果我输入多个地址)。
-
不刮是什么意思?如果我尝试从元素中获取文本,我能够成功地从每个网页中获取正确的文本。
标签: python python-3.x selenium selenium-webdriver selenium-chromedriver