Scraping mit Python

Überblick

0. Paket

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

1. Webdaten-Scraping

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. Eingrenzte Daten eingrenzen: einzelne Nachrichten

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

3. Erfassung von Datum und Uhrzeit und Gestaltung des Zeitstempels

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. Überschrift abrufen, 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. Sammeln Sie die erfassten Informationen in einem Datenrahmen

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

6. Funktionalisierung

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

7. Wiederholter Code

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. Speichern

#headlines.to_csv(datetime.today().strftime("%Y%m%d")+'FILENAME.csv') ##Grundsätzlich.csv ist einfacher zu bedienen und wird empfohlen
headlines.to_excel('/Users/USERNAME/FOLDERNAME/'+ datetime.today().strftime("%Y%m%d")+'FILENAME.xlsx') ##Klicken Sie hier, wenn das Excel-Format besser ist

Tatsächlicher Code

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') ##Klicken Sie hier, wenn das Excel-Format besser ist

Recommended Posts

Scraping mit Python
[Scraping] Python-Scraping
Scraping mit Python 3.5 async / await
Scraping mit Python 3.5 Async-Syntax
Web Scraping mit Selenium (Python)
Python-Scraping-Memo
Python Scraping get_ranker_categories
Scraping mit Python
Scraping mit Python
Starten Sie Python
Python Scraping eBay
Python Scraping get_title
Python: Scraping Teil 2
Scraping von Websites mit JavaScript in Python
[Python] Eine Tabelle mit Beautiful Soup kratzen
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Bearbeiten Sie Redmine mit Python Redmine
Fibonacci-Sequenz mit Python
UnicodeEncodeError: 'cp932' während des Python-Scrapings
Scraping mit Python + PhantomJS
Datenbereinigung mit Python
Verwenden von Python # externen Paketen
WiringPi-SPI-Kommunikation mit Python
Altersberechnung mit Python
Suchen Sie Twitter mit Python
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
Namensidentifikation mit Python
Hinweise zur Verwendung von Python-Unterprozessen
Versuchen Sie es mit Tweepy [Python2.7]
Scraping von RSS mit Python
Ich habe versucht, Web-Scraping mit Python und Selen
Ein Forscher eines Pharmaunternehmens fasste das Web-Scraping mit Python zusammen
Python-Memo mit perl-ternärem Operator
Mit Python abflachen
Ich habe versucht, mit Python zu kratzen
Web Scraping mit Python + JupyterLab
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Python] Scraping in AWS Lambda
Python Super Anfänger versucht zu kratzen
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Python
Schaben mit Chromedriver in Python
Verwenden von Quaternion mit Python ~ numpy-quaternion ~
Versuchen Sie es mit Kubernetes Client -Python-
Python-Notizen zur Verwendung von Perl-Spezialvariablen
[Python] Verwenden von OpenCV mit Python (Basic)
Überwachung von Website-Änderungen mit Python
Scraping mit Selen in Python
Mit Python auf Twitter posten
Starten Sie mit Python zu Selen
Suchalgorithmus mit word2vec [Python]
Ändern Sie die Python-Version mit pyenv
# 1 [python3] Einfache Berechnung mit Variablen