Сбор различных атрибутов при сканировании веб-сайта - PullRequest
1 голос
/ 20 апреля 2020

Я создавал пауков для разных веб-сайтов, содержащих статьи, которые выводят необработанный текст, текст и URL-адреса. Я хотел бы получить дополнительную информацию, такую ​​как описание, язык, дата публикации и т. Д. c.

Это один пример:

import scrapy
import re
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
import requests
from bs4 import BeautifulSoup
stop_words = set(stopwords.words("german"))


class AListSpider(scrapy.Spider):
    name = 'aList'
    r = requests.get("https://www.a-list.at/newssitemap.xml")
    xml = r.text
    soup = BeautifulSoup(xml)
    urls_wien = list(filter(lambda y: '/wien/' in y, map(lambda x: x.text, soup.find_all("loc"))))

    def start_requests(self):
        urls = self.urls_wien
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        try:
            yield {
              'raw_text': BeautifulSoup(response.css('.news-single-item').get(), "html.parser").find(class_="news-single-item").text,
              'text': ' '.join([i for i in word_tokenize(re.sub(pattern='[^a-zA-Z_\-ÖöÜüÄäßèé]',string=BeautifulSoup(response.css('.news-single-item').get(), "html.parser").find(class_="news-single-item").text, repl=' ')) if i not in stop_words and not re.match('[0-9]', i) and len(i) >1]),
              'url': response.url
          }
        except:
            pass

Я прочитал, что возможно Соберите больше информации, используя schema.org, кто-нибудь может объяснить, как это работает?

1 Ответ

2 голосов
/ 20 апреля 2020

В моем последнем проекте я хотел проверить проверенные элементы во время их сбора, поэтому я использовал scrapy_jsonschema . Их страница действительно хорошо объясняет, как ее использовать.

Если вам нужна помощь в создании схемы json, этот сайт очень полезен http://json-schema.org/learn/getting-started-step-by-step.html

...