[Python] Informations sur les lentilles de grattage sur price.com

Gratter les informations sur les lentilles de price.com avec python. Obtenez toutes les informations sur les prix et les spécifications des objectifs avec csv. Les éléments à acquérir sont les suivants.

Nom de l'appareil photo, classement, prix le plus bas, prix de crédit le plus bas, URL du prix, monture compatible, type d'objectif, mise au point, type d'objectif détaillé, compatible pleine taille, APS-C uniquement, configuration de l'objectif, nombre de lames d'ouverture, distance focale, distance de prise de vue la plus courte, Grossissement de prise de vue maximal, valeur F ouverte, angle de vue, mécanisme de correction du tremblement de l'appareil photo, anti-goutte, anti-poussière, grand angle, télescope, macro, grossissement élevé, œil de poisson (œil de poisson), prise de vue inclinée, miroir, grand diamètre, crêpe, diamètre du filtre , Diamètre maximum x longueur, poids

renzu.py


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

#URL du site cible
#prix.classement des objectifs com
url = "https://kakaku.com/camera/camera-lens/ranking_1050/"
page_count = 1
linklist = []
#Obtenez chaque page d'objectif de toutes les pages de classement
while True:
    category_res = requests.get(url + "?page=" + str(page_count)).text
    soup = BeautifulSoup(category_res, 'html.parser') #Belle initialisation de soupe
    print ("{}Page de la page".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)
#Signaler jusqu'à ce que la page suivante soit épuisée
    a_next_tag= soup.find_all("li", {"class": "next"})
    if a_next_tag:
#    if page_count < 1:
        page_count += 1
        continue
    break
#Supprimer les doublons
linklist = sorted(list(set(linklist)),key=linklist.index)
################################################################
#Ecrire le nom du fichier (date et heure d'acquisition)
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("Nom de la caméra,Classement,Prix le plus bas,クレジットPrix le plus bas,URL du prix,")
#Passer à la fiche technique de l'objectif
page_html = linklist[0] + "spec/#tab"
res = urllib.request.urlopen(page_html)
page_soup = BeautifulSoup(res, 'html.parser')
#Obtenez un tableau des spécifications des objectifs
table = page_soup.findAll("table", {"class":"tblBorderGray mTop15"})[0]
rows = table.findAll("tr")
index=-1
#Écrivez chaque titre dans le tableau des spécifications de l'objectif
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")
#Écrivez les informations de prix de l'objectif
for page_url in linklist:
     page_html = page_url + "spec/#tab"
     res = urllib.request.urlopen(page_html)
     page_soup = BeautifulSoup(res, 'html.parser')
#Éléments requis et nom de classe
     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(",")
#Écrire les informations sur l'objectif
#Spécifier la table
     table = page_soup.findAll("table", {"class":"tblBorderGray mTop15"})[0]
     rows = table.findAll("tr")
#Ecrire la table
     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] Informations sur les lentilles de grattage sur price.com
Informations obtenues à partir de tweet_id (Python)
[Scraping] Scraping Python
Obtenez des informations météorologiques avec Python et le grattage
Collecter des informations sur Twitter avec Python (API Twitter)
Obtenez des informations sur la propriété en grattant avec python
Scraping depuis un site authentifié avec python
Mémo de raclage Python
Scraping Python get_ranker_categories
Grattage avec Python
Grattage avec Python
Python racle eBay
Grattage Python get_title
MeCab de Python
Python: grattage partie 1
Scraping à l'aide de Python
Python: grattage, partie 2
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
Python grattage Extraire l'environnement de course du site de courses de chevaux
[Python] Flux du scraping Web à l'analyse des données
Obtenez des informations sur la carte BTC / JPY de Python --bitflyer
Utilisez Thingsspeak de Python
Grattage en Python (préparation)
Touchez MySQL depuis Python 3
Essayez de gratter avec Python.
Exploitez Filemaker depuis Python
Utiliser fluentd de python
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
UnicodeEncodeError: 'cp932' pendant le scraping Python
Changements de Python 2 à Python 3.0
Principes de base du grattage Python
Grattage avec Python + PhantomJS
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
Utilisez MySQL depuis Python
Exécutez Python à partir d'Excel
Installer Python à partir de la source
Exécuter des commandes depuis Python
Faites fonctionner le neutron de Python!
Utiliser MySQL depuis Python
Faire fonctionner LXC depuis Python
Manipuler riak depuis python
Forcer Python depuis Fortran
Utilisez BigQuery depuis Python.
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Scraping RSS avec Python
[Python] Lire depuis Stdin
Utilisez mecab-ipadic-neologd de Python
Obtenir des informations telles que l'utilisation du GPU à partir de Python (commande nvidia-smi)
Récupérer les données souhaitées du site Web en liant Python et Excel
Collecte d'informations sur Twitter avec Python (intégration de MySQL et Python)
Aplatir à l'aide du rendement Python de
Scraping à l'aide de Python 3.5 async / await
Appeler CPLEX depuis Python (DO cplex)
Deep Python appris de DEAP
J'ai essayé de gratter avec Python
Publier de Python vers Slack