Пытаюсь соскрести с нескольких ссылок - PullRequest
0 голосов
/ 21 ноября 2018

Целью этого сценария является посещение веб-сайта, создание ссылок на конкретные продукты, а затем очистить эти созданные ссылки.

В этом сценарии сценарий будет получать ссылки от четырех рекомендуемых продуктов, отображаемых на домашней странице продукта, через определенный атрибут.Ссылки сохраняются в переменной 'links', которая содержит четыре URL-адреса для четырех рекомендуемых продуктов.

Затем я буду использовать запросы для запроса каждого из этих URL-адресов продуктов для очистки данных с помощью BeautifulSoup.

Вот мой код:

import time
from selenium import webdriver
import selenium.webdriver.chrome.service as service
import requests
from bs4 import BeautifulSoup


url = "https://www.vatainc.com/"
service = service.Service('/Users/Name/Downloads/chromedriver.exe')
service.start()
capabilities = {'chrome.binary': '/Google/Chrome/Application/chrome.exe'}
driver = webdriver.Remote(service.service_url, capabilities)
driver.get(url)
time.sleep(2)
links = [x.get_attribute('href') for x in driver.find_elements_by_xpath("//*[contains(@class, 'product-name')]/a")]


html = requests.get(links).text
soup = BeautifulSoup(html, "html.parser")
products = soup.findAll("div")
print(products)

Код ошибки, который я получаю:

Не найдено адаптеров подключения для '[' https://www.vatainc.com/0240-bonnie-bone-marrow-biopsy-skills-trainertm.html', 'https://www.vatainc.com/0910-seymour-iitm-wound-care-model-1580.html', 'https://www.vatainc.com/2410-chester-chesttm-with-new-advanced-arm-1197.html',' https://www.vatainc.com/2365-advanced-four-vein-venipuncture-training-aidtm-dermalike-iitm-latex-free.html']'

1 Ответ

0 голосов
/ 21 ноября 2018

links - список строк (URL).Вы не можете передать список как url аргумент requests.get().Попробуйте перебрать этот список и передать каждый URL один за другим и получить каждую страницу:

for link in links:
    html = requests.get(link).text
    soup = BeautifulSoup(html, "html.parser")
    products = soup.findAll("div")
    print(products)
...