Ошибка веб-очистки: запрос и отсутствие подключения - PullRequest
3 голосов
/ 08 января 2020

Я пытаюсь написать свою первую программу на python. Целью программы очистки веб-страниц является получение цен от потенциально более 100 веб-сайтов для нескольких типов продуктов. Мне удалось написать программу для одного веб-сайта и без проблем экспортировать ее в файл Excel. Однако теперь у меня возникают проблемы при попытке веб-очистки нескольких сайтов.

Я пытаюсь поместить в список более одного URL-адреса, а затем создать для l oop команду для запуска одного и того же кода для каждого URL-адреса. , Ниже приведен код:

import pandas as pd
import requests
from bs4 import BeautifulSoup

#Aero Stripped Lowers
url = ['https://www.aeroprecisionusa.com/ar15/lower-receivers/stripped-lowers?product_list_limit=all', 'https://www.aeroprecisionusa.com/ar15/lower-receivers/complete-lowers?product_list_limit=all']
for website in url:
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"}
    page = requests.get(url, headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser')

#Locating All Stripped Aero Lowers On Site
all_aero_stripped_lowers = soup.find(class_='products wrapper container grid products-grid')
items = all_aero_stripped_lowers.find_all(class_='product-item-info')

#Identifying All Aero Stipped Lower Names And Prices
aero_stripped_lower_names = [item.find(class_='product-item-link').text for item in items]
aero_stripped_lower_prices = [item.find(class_='price').text for item in items]


Aero_Stripped_Lowers_Consolidated = pd.DataFrame(
    {'Aero Stripped Lower': aero_stripped_lower_names,
     'Prices': aero_stripped_lower_prices,
     })

Aero_Stripped_Lowers_Consolidated.to_csv('MasterPriceTracker.csv')

Я получаю сообщение об ошибке ниже:

Traceback (most recent call last):
  File "C:/Users/ComputerName/Documents/PyCharm_Projects/Aero Stripped Lower List/NewAeroStrippedLower.py", line 9, in <module>
    page = requests.get(url, headers=headers)
  File "C:\Python\Python38\lib\site-packages\requests\api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Python\Python38\lib\site-packages\requests\api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python\Python38\lib\site-packages\requests\sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python\Python38\lib\site-packages\requests\sessions.py", line 640, in send
    adapter = self.get_adapter(url=request.url)
  File "C:\Python\Python38\lib\site-packages\requests\sessions.py", line 731, in get_adapter
    raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for '['https://www.aeroprecisionusa.com/ar15/lower-receivers/stripped-lowers?product_list_limit=all', 'https://www.aeroprecisionusa.com/ar15/lower-receivers/complete-lowers?product_list_limit=all']'

Заранее благодарен за любую помощь, которую вы можете оказать!

1 Ответ

2 голосов
/ 08 января 2020

Вы используете request.get () в списке. Это простая ошибка:

# -- snip --

for website in url:
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"}
    page = requests.get(website, headers=headers) # not 'url'
    soup = BeautifulSoup(page.content, 'html.parser')

# -- snip --
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...