Реализация веб-сканера на Python

#python #python-3.x #web-scraping #web-crawler

#python #python-3.x #очистка веб-страниц #веб-сканер

Вопрос:

Пока я пытаюсь реализовать простой код веб-сканера в Colab , и поскольку я написал следующий код, я получил следующую синтаксическую ошибку. Пожалуйста, посоветуйте мне, как решить проблему, чтобы запустить его:

 import requests
from bs4 import BeautifulSoup

def trade_spider(max_pages):
    page=1 
    while page <= max_pages:
      url = 'https://www.ebay.com/sch/i.html?_from=R40amp;_nkw=2" Butterfly Valveamp;_sacat=0amp;_pgn='  str(page)
      source_code= requests.get(url)
      plain_text=source_code.text
      soup = BeautifulSoup(plain_text)
        for link in soup.findALL('a', {'class':'s-item__title s-item__title--has-tags'})
          href = link.get('href')
          print(href)
        page =1   

trade_spider(1)
 

Ошибка:

 File "<ipython-input-4-5d567ac26fb5>", line 11
    for link in soup.findALL('a', {'class':'s-item__title s-item__title--has-tags'})
    ^
IndentationError: unexpected indent
 
 

Комментарии:

1. выровняйте эту строку » для ссылки в soup.findALL» под «soup = BeautifulSoup (plain_text)»

Ответ №1:

В этом коде много неправильных вещей, но я могу помочь. Цикл for имеет дополнительный отступ, поэтому удалите отступ с начала, а также добавьте a : в конец цикла for . Кроме того, похоже, что вы просто скопировали это из Интернета, но что угодно. В любом случае, вот правильный код:

 import requests
from bs4 import BeautifulSoup

def trade_spider(max_pages):
    page=1 
    while page <= max_pages:
      url = 'https://www.ebay.com/sch/i.html?_from=R40amp;_nkw=2" Butterfly Valveamp;_sacat=0amp;_pgn='  str(page)
      source_code= requests.get(url)
      plain_text=source_code.text
      soup = BeautifulSoup(plain_text)
      for link in soup.findALL('a', {'class':'s-item__title s-item__title--has-tags'}):
        href = link.get('href')
        print(href)
      page =1   

trade_spider(1)
 

Редактировать: после того, как я запустил этот код, возникает ошибка:

 main.py:10: GuessedAtParserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html5lib"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 10 of the file main.py. To get rid of this warning, pass the additional argument 'features="html5lib"' to the BeautifulSoup constructor.
 

Итак, вот правильный код:

 import requests
from bs4 import BeautifulSoup

def trade_spider(max_pages):
    page=1 
    while page <= max_pages:
      url = 'https://www.ebay.com/sch/i.html?_from=R40amp;_nkw=2" Butterfly Valveamp;_sacat=0amp;_pgn='  str(page)
      source_code= requests.get(url)
      plain_text=source_code.text
      soup = BeautifulSoup(plain_text, features="html5lib")
      for link in soup.find_all('a', {'class':'s-item__title s-item__title--has-tags'}):
        href = link.get('href')
        print(href)
      page =1   

trade_spider(1)