Ползающая и очищающая вики: картина дня - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь работать над любимым проектом, который требует, чтобы я пролистал список Википедии: изображение страниц за месяц. Например: https://en.wikipedia.org/wiki/Wikipedia: Picture_of_the_day / May_2004 содержит список изображений, за которым следует краткая подпись для каждого изображения. Я хочу сделать следующие 2 вещи здесь:

  1. Очистите все изображения со страницы и соответствующую подпись. (Желательно словарь для хранения пары «Изображение: подпись»)
  2. Просматривайте другие месяцы и повторяйте 1.

Любая помощь по выполнению sh будет высоко оценена.

Большое спасибо.

1 Ответ

0 голосов
/ 07 февраля 2020

Я предлагаю вам использовать scrapy в python, так как он намного легче, чем fe селен. В функции parse вы можете искать все теги img, как здесь, где после получения html сайта дано. Здесь вы можете распечатать все найденные ссылки на изображения и тексты, так как все нужные нам тексты находятся в тегах <p>, или при необходимости сохранить их в файл.

import scrapy
from scrapy.crawler import CrawlerProcess
import logging

class Spider(scrapy.Spider):
   def __init__(self):
      self.name = "WikiScraper"
      self.start_urls = ["https://en.wikipedia.org/wiki/Wikipedia:Picture_of_the_day/May_2004"] # Here you can add more links or generate them
   def parse(self, response):
      for src in response.css('img::attr(src)').extract():
         print("Image:", src)
      for text in response.css('p *::text'):
         print("Text:", text.extract())

if __name__ == "__main__":
   logging.getLogger('scrapy').propagate = False
   process = CrawlerProcess()
   process.crawl(Spider)
   process.start()

Наконец, вам необходимо объединить весь текст, который должен быть объединенным (у меня не было времени сделать это) и добавить все веб-сайты, которые вам нужны. Все остальное, что я не упомянул, вы можете найти на scrapy .

Надеюсь, я ничего не пропустил!

...