Как я могу получить информацию с этого сайта, используя Python Scrapy? - PullRequest
0 голосов
/ 23 сентября 2019

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

import scrapy
from bs4 import BeautifulSoup
from scrapy.item import Field, Item
from scrapy.spiders import CrawlSpider
from scrapy.spiders import Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.loader import ItemLoader
from scrapy.loader.processors import Join

class FichaClub(Item):
    nombre = Field()
    email = Field()
    zona = Field()

class SacaClubes(CrawlSpider):
    name="Spider100"
    start_urls = ["http://www.ecuafutbol.org/web/asociaciones.php"]
    allowed_domains = ['ecuafutbol.org']

    rules = (
        Rule(LinkExtractor(allow='asociacion_detalle.php*')),
        Rule(LinkExtractor(allow='club.php*'), callback= 'parse_items'),
    )

    def parse_items(self, response):
        item = scrapy.loader.ItemLoader(FichaClub(), response)
        item.add_xpath('email','//a[starts-with(@href, "mail")]/text()')
        item.add_xpath('nombre','//*[@id="gallery-post-1511"]/article/div/div/div/p/strong[1]/text()')
        yield item.load_item()

1 Ответ

1 голос
/ 23 сентября 2019

Поправьте меня, если я ошибаюсь, но похоже, что вы пытаетесь соскрести команды с нижнего стола.Чтобы очистить эти данные, вам нужно будет указать ваши parse_items для поиска <div class="table-responsive">.

Затем вы можете выполнить итерацию по списку и распечатать / сделать все, что захотите с именами команд.Вот пример того, что я бы попробовал использовать

 soccer = BeautifulSoup(start_urls, 'html.parser')
 table = soccer.findAll("div", class_="table-responsive")
 teams = []
for line in table:
       team_found = re.findall(r'([A-Z]\w+-*\w*)', line)
       teams = teams + team_found

Попробуйте это.Если у него есть проблемы, возьмите строку table = soccer.findAll("div", class_="table-responsive") и измените имя класса на другие элементы внутри этой таблицы.Убедитесь, что вы используете функцию Chromes Inspect, чтобы выделить HTML.Надеюсь, это было полезно!

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