[Python] Informationen zu Scraping-Objektiven von price.com

Scraping von Linseninformationen von price.com mit Python. Holen Sie sich alle Preisinformationen und Objektivspezifikationen mit csv. Die zu erwerbenden Gegenstände sind wie folgt.

Kameraname, Rangfolge, niedrigster Preis, niedrigster Kreditpreis, Preis-URL, kompatible Fassung, Objektivtyp, Fokus, detaillierter Objektivtyp, kompatibel in voller Größe, nur APS-C, Objektivkonfiguration, Anzahl der Blendenblätter, Brennweite, kürzeste Aufnahmeabstand, Maximale Aufnahmevergrößerung, offener F-Wert, Blickwinkel, Verwacklungskorrekturmechanismus, tropfenfest, staubdicht, Weitwinkel, Teleskop, Makro, hohe Vergrößerung, Fischauge (Fischauge), Neigungsaufnahme, Spiegel, großer Durchmesser, Pfannkuchen, Filterdurchmesser , Maximaler Durchmesser x Länge, Gewicht

renzu.py


from bs4 import BeautifulSoup
import urllib.request
import re
import requests
import time
import datetime

#URL der Zielwebsite
#Preis.com Objektiv Ranking
url = "https://kakaku.com/camera/camera-lens/ranking_1050/"
page_count = 1
linklist = []
#Holen Sie sich jede Objektivseite von allen Ranking-Seiten
while True:
    category_res = requests.get(url + "?page=" + str(page_count)).text
    soup = BeautifulSoup(category_res, 'html.parser') #Schöne Suppeninitialisierung
    print ("{}Seite Seite".format(page_count))
    for elm in soup.find_all("a"):
        if 'href' in elm.attrs:
            link_url = elm.attrs['href']
            if "https://kakaku.com/item/" in link_url:
                linklist.append(link_url)
 #               print(link_url)
#Markieren, bis die nächste Seite leer ist
    a_next_tag= soup.find_all("li", {"class": "next"})
    if a_next_tag:
#    if page_count < 1:
        page_count += 1
        continue
    break
#Duplikate entfernen
linklist = sorted(list(set(linklist)),key=linklist.index)
################################################################
#Dateinamen schreiben (Datum und Uhrzeit der Erfassung)
now = datetime.datetime.now()
filename = "renzu"+now.strftime('%Y%m%d_%H%M%S') + '.csv'
f = open(filename,'a', encoding='cp932',errors='ignore')
f.write("Kameraname,Rangfolge,Geringster Preis,クレジットGeringster Preis,Preis URL,")
#Gehen Sie zum Objektivspezifikationsblatt
page_html = linklist[0] + "spec/#tab"
res = urllib.request.urlopen(page_html)
page_soup = BeautifulSoup(res, 'html.parser')
#Holen Sie sich eine Tabelle mit Objektivspezifikationen
table = page_soup.findAll("table", {"class":"tblBorderGray mTop15"})[0]
rows = table.findAll("tr")
index=-1
#Schreiben Sie jede Überschrift in die Objektivspezifikationstabelle
for row in rows:
    csvRow = []
    for cell in row.findAll('th'):
        index +=1
        if index==0:
            continue
        if index==17:
            continue
        if index==26:
            continue
        if index==29:
            continue        
        cell=cell.get_text()
        cell=re.sub(r"[\n\t\s]*", "", str(cell))        
        f.write(cell)
        f.write(",")         
f.write("\n")
#Schreiben Sie die Preisinformationen des Objektivs
for page_url in linklist:
     page_html = page_url + "spec/#tab"
     res = urllib.request.urlopen(page_html)
     page_soup = BeautifulSoup(res, 'html.parser')
#Erforderliche Elemente und Klassenname
     name =  page_soup.find("h2",itemprop="name").text
     try:
        rank =  page_soup.find("span",class_="rankNum").text
     except AttributeError:
         rank = ''
     try:
         low_price = page_soup.find("div", class_="priceWrap").find("span",class_="priceTxt").text
         low_price =low_price.replace(',', '')
     except AttributeError:
         low_price = ''
     try:
         cre_price = page_soup.find("div", class_="creditCard").find("span",class_="priceTxt").text
         cre_price =cre_price.replace(',', '')
     except AttributeError:
         cre_price = ''
     print(rank)
     print(low_price)
     f.write(name)
     f.write(",")
     f.write(rank)
     f.write(",")
     f.write(low_price)
     f.write(",")
     f.write(cre_price)
     f.write(",")
     f.write(page_url)
     f.write(",")
#Schreiben Sie Objektivinformationen
#Tabelle angeben
     table = page_soup.findAll("table", {"class":"tblBorderGray mTop15"})[0]
     rows = table.findAll("tr")
#Tabelle schreiben
     for row in rows:
        csvRow = []
        for cell in row.findAll('td'):
            cell=cell.get_text()
            cell=re.sub(r"[\n\t\s]*", "", str(cell))
            f.write(cell)
            f.write(",")
     f.write("\n") 
f.close()           

Recommended Posts

[Python] Informationen zu Scraping-Objektiven von price.com
Informationen von tweet_id (Python)
[Scraping] Python-Scraping
Holen Sie sich Wetterinformationen mit Python & Scraping
Sammeln von Informationen von Twitter mit Python (Twitter API)
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Scraping von einer authentifizierten Site mit Python
Python-Scraping-Memo
Python Scraping get_ranker_categories
Scraping mit Python
Scraping mit Python
Python Scraping eBay
Python Scraping get_title
MeCab von Python
Python: Scraping Teil 1
Scraping mit Python
Python: Scraping Teil 2
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
Python-Scraping Extrahieren Sie die Rennumgebung von der Pferderennseite
[Python] Fluss vom Web-Scraping zur Datenanalyse
Informationen zum BTC / JPY-Board erhalten Sie von Python --bitflyer
Verwenden Sie thingspeak aus Python
Scraping in Python (Vorbereitung)
Berühren Sie MySQL in Python 3
Versuchen Sie es mit Python.
Bedienen Sie Filemaker von Python aus
Verwenden Sie fließend Python
Greifen Sie über Python auf Bitcoind zu
Änderungen von Python 3.0 zu Python 3.5
UnicodeEncodeError: 'cp932' während des Python-Scrapings
Änderungen von Python 2 zu Python 3.0
Grundlagen der Python-Scraping-Grundlagen
Scraping mit Python + PhantomJS
Sammeln von Informationen von Twitter mit Python (morphologische Analyse mit MeCab)
Verwenden Sie MySQL aus Python
Führen Sie Python aus Excel aus
Installieren Sie Python von der Quelle
Führen Sie Befehle aus Python aus
Bedienen Sie Neutronen von Python!
Verwenden Sie MySQL aus Python
Betreiben Sie LXC von Python aus
Manipuliere Riak aus Python
Erzwinge Python aus Fortran
Verwenden Sie BigQuery aus Python.
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
Scraping von RSS mit Python
[Python] Von Stdin lesen
Verwenden Sie mecab-ipadic-neologd von Python
Informationen wie die GPU-Nutzung von Python abrufen (Befehl nvidia-smi)
Scrapen der gewünschten Daten von der Website durch Verknüpfen von Python und Excel
Sammeln von Informationen von Twitter mit Python (Integration von MySQL und Python)
Mit Python abflachen
Scraping mit Python 3.5 async / await
Rufen Sie CPLEX von Python aus auf (DO cplex)
Deep Python hat von DEAP gelernt
Ich habe versucht, mit Python zu kratzen
Post von Python nach Slack