Scraping à l'aide de Python

Aperçu

0. Paquet

import pandas as pd
from bs4 import BeautifulSoup
import httplib2
import re
import time
from datetime import datetime

1. Grattage de données Web

num = 1
h = httplib2.Http('.cache')
base_url = "http://~/page"
url=base_url+ str(num)
response, content = h.request(url)
content = content.decode('utf-8')
soup = BeautifulSoup(content, 'lxml')

2. Affiner les données extraites: actualités individuelles

data = soup.find_all('div',  {"id": "primary"})

3. Acquisition de la date et de l'heure et mise en forme de l'horodatage

dates = data[0].find_all('span', class_ = 'posted-on')

temp = []
for item in dates:
        date = item.text
        temp.append(date[1:11].split())
dlist = []
for item in temp:
    index = item[0].find("/")
    if index != -1:
        dlist.append(datetime.strptime(item[0], '%d/%m/%Y').date())
    else:
        dlist.append(datetime.strptime(item[0], '%Y-%m-%d').date())

4. Obtenez le titre, l'URL

newdata = data[0].find_all('h2', class_ ='entry-title')
tlist = []
ulist = []
for item in newdata:
    urls = re.search('href="(?P<URL>.+?)"', str(item)).group('URL')
    titles = item.get_text()
    ulist.append(urls)
    tlist.append(re.sub(r'\n|\r|\t', '', titles))

5. Collectez les informations acquises dans une trame de données

list_headline = pd.DataFrame({'date':dlist,
                            'headline':tlist,
                            'url':ulist})

6. Fonctionnalisation

def headline(num):
    h = httplib2.Http('.cache')
    base_url = "http://~/page"
    url=base_url+ str(num)
#Omission#
    return list_headline

7. Code répété

headlines = headline(1)
time.sleep(5)

for i in range (2,5):
    temp = headline(i)
    headlines = pd.concat([headlines, temp]) 
    time.sleep(5)
    print (i)

8. Enregistrer

#headlines.to_csv(datetime.today().strftime("%Y%m%d")+'FILENAME.csv') ##Fondamentalement.csv est plus facile à utiliser et recommandé
headlines.to_excel('/Users/USERNAME/FOLDERNAME/'+ datetime.today().strftime("%Y%m%d")+'FILENAME.xlsx') ##Cliquez ici si le format Excel est meilleur

Code réel

import pandas as pd
from bs4 import BeautifulSoup
import httplib2
import re
import time
from datetime import datetime

def headline(num):
    h = httplib2.Http('.cache')
    base_url = "http://~/page"
    url=base_url+ str(num)
    response, content = h.request(url)
    soup = BeautifulSoup(content, 'lxml')
    data = soup.find_all('div',  {"id": "primary"})
    dates = data[0].find_all('span', class_ = 'posted-on')
    temp = []
    for item in dates:
            date = item.text
            temp.append(date[1:11].split())
    dlist = []
    for item in temp:
        index = item[0].find("/")
        if index != -1:
            dlist.append(datetime.strptime(item[0], '%d/%m/%Y').date())
        else:
            dlist.append(datetime.strptime(item[0], '%Y-%m-%d').date())

    newdata = data[0].find_all('h2', class_ ='entry-title')
    tlist = []
    ulist = []
    for item in newdata:
        urls = re.search('href="(?P<URL>.+?)"', str(item)).group('URL')
        titles = item.get_text()
        ulist.append(urls)
        tlist.append(re.sub(r'\n|\r|\t', '', titles))


    list_headline = pd.DataFrame({'date':dlist,
                            'headline':tlist,
                            'url':ulist})
    return list_headline

headlines = headline(1)
time.sleep(5)

for i in range (2,5):
    temp = headline(i)
    headlines = pd.concat([headlines, temp]) 
    time.sleep(5)
    print (i)

#headlines.to_csv(datetime.today().strftime("%Y%m%d")+'FILENAME.csv')
headlines.to_excel('/Users/USERNAME/FOLDERNAME/'+ datetime.today().strftime("%Y%m%d")+'FILENAME.xlsx') ##Cliquez ici si le format Excel est meilleur

Recommended Posts

Scraping à l'aide de Python
[Scraping] Scraping Python
Scraping à l'aide de Python 3.5 async / await
Scraping à l'aide de la syntaxe Python 3.5 Async
Web scraping avec Selenium (Python)
Mémo de raclage Python
Scraping Python get_ranker_categories
Grattage avec Python
Grattage avec Python
Commencez à utiliser Python
Python racle eBay
Grattage Python get_title
Python: grattage, partie 2
Scraping de sites Web à l'aide de JavaScript en Python
[Python] Gratter une table avec Beautiful Soup
Grattage en Python (préparation)
Essayez de gratter avec Python.
Manipuler Redmine à l'aide de Python Redmine
Séquence de Fibonacci utilisant Python
UnicodeEncodeError: 'cp932' pendant le scraping Python
Grattage avec Python + PhantomJS
Nettoyage des données à l'aide de Python
Utilisation des packages Python #external
Câblage Communication Pi-SPI avec Python
Calcul de l'âge à l'aide de python
Rechercher sur Twitter avec Python
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Identification de nom à l'aide de python
Notes sur l'utilisation de sous-processus Python
Essayez d'utiliser Tweepy [Python2.7]
Scraping RSS avec Python
J'ai essayé le web scraping en utilisant python et sélénium
Un chercheur d'une société pharmaceutique a résumé le raclage Web à l'aide de Python
mémo python utilisant l'opérateur perl-ternaire
Aplatir à l'aide du rendement Python de
J'ai essayé de gratter avec Python
Web scraping avec python + JupyterLab
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
[S3] CRUD avec S3 utilisant Python [Python]
[Python] Scraping dans AWS Lambda
python super débutant essaie de gratter
[Python] Essayez d'utiliser le canevas de Tkinter
Python
Grattage avec chromedriver en python
Utilisation de Quaternion avec Python ~ numpy-quaternion ~
Essayez d'utiliser Kubernetes Client -Python-
notes python pour l'utilisation de variables spéciales perl
[Python] Utilisation d'OpenCV avec Python (basique)
Surveillance des changements de site Web à l'aide de python
Grattage avec du sélénium en Python
Publier sur Twitter en utilisant Python
Commencez à Selenium en utilisant python
Algorithme de recherche utilisant word2vec [python]
Changer la version de python à l'aide de pyenv
# 1 [python3] Calcul simple à l'aide de variables