Как я могу получить python, чтобы сравнить очищенные данные с заполненным CSV? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть python код, который создает CSV-файл и заполняет его именами текущих судей Верховного суда штата США. Я получил python для очистки данных, а также для создания CSV и заполнить его данными.

Я пытаюсь заставить python работать ежедневно (я настроил задачу windows планировщик), очистите те же страницы, сравните новые данные со старым CSV, предупредите пользователя, эквивалентны ли очищенные данные данным в CSV, отследите изменения и обновите CSV с помощью новых очищенных данных.

Я новичок в python, поэтому я не уверен, как поступить с моим кодом.

Что я могу добавить в свой код, чтобы это произошло? Спасибо! Вот мой текущий код:

import requests
from bs4 import BeautifulSoup
import pandas as pd

list = ['https://ballotpedia.org/Alabama_Supreme_Court', 
'https://ballotpedia.org/Alaska_Supreme_Court', 
'https://ballotpedia.org/Arizona_Supreme_Court', 
'https://ballotpedia.org/Arkansas_Supreme_Court', 
'https://ballotpedia.org/California_Supreme_Court', 
'https://ballotpedia.org/Colorado_Supreme_Court', 
'https://ballotpedia.org/Connecticut_Supreme_Court', 
'https://ballotpedia.org/Delaware_Supreme_Court']

temp_dict = {}

for page in list:
    r = requests.get(page)
    soup = BeautifulSoup(r.content, 'html.parser')

    temp_dict[page.split('/')[-1]] = [item.text for item in 
    soup.select("table.wikitable.sortable.jquery- 
    tablesorter a")]

df = pd.DataFrame.from_dict(temp_dict, 
orient='index').transpose()
df.to_csv('State Supreme Court Justices.csv')

1 Ответ

0 голосов
/ 27 марта 2020

Я не совсем понимаю вашу проблему. Позвольте привести пример.

from simplified_scrapy import Spider, SimplifiedDoc, SimplifiedMain
from datetime import datetime
import requests
class MySpider(Spider):
  name = 'ballotpedia.org'
  allowed_domains = ['ballotpedia.org']
  start_urls = [
    'https://ballotpedia.org/Alabama_Supreme_Court', 
    'https://ballotpedia.org/Alaska_Supreme_Court', 
    'https://ballotpedia.org/Arizona_Supreme_Court', 
    'https://ballotpedia.org/Arkansas_Supreme_Court', 
    'https://ballotpedia.org/California_Supreme_Court', 
    'https://ballotpedia.org/Colorado_Supreme_Court', 
    'https://ballotpedia.org/Connecticut_Supreme_Court', 
    'https://ballotpedia.org/Delaware_Supreme_Court'
  ]
  # refresh_urls = True # For debug. If efresh_urls = True, start_urls will be crawled again.
  custom_down = True # All pages are downloaded using custom methods
  def customDown(self,url):
    if url["url"] not in self.start_urls: return ""
    r = requests.get(url['url']) # Use requests to download the page and return the HTML string
    return r.content.decode('utf-8')

  def extract(self, url, html, models, modelNames):
    if url["url"] not in self.start_urls: return True
    doc = SimplifiedDoc(html)
    lstA = doc.select('table.wikitable sortable jquery-tablesorter').listA(url=url["url"]) # Get link data for subsequent crawling
    return {"Urls": lstA, "Data": lstA} # Return data to framework
  # If you want to collect start_urls regularly, override this method.
  # It returns an array of hours and minutes
  def plan(self):
    if datetime.now().weekday()>=6: # Except for weekends
      return []
    else:
      return [{'hour':8,'minute':30},{'hour':18,'minute':0}]

SimplifiedMain.startThread(MySpider()) # Start crawling
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...