Im Artikel
import urllib.request
html = urllib.request.urlopen(url).read()
Dieselbe Seite wird nur angezeigt, weil die Suchbedingung nicht angegeben ist. Auch wenn dieselbe URL im Browser geöffnet wird, unterscheiden sich die angezeigten Inhalte zwischen der neuen und der zweiten. Anscheinend wird die Sitzung beurteilt.
Also habe ich nachgeschlagen
Seite unmittelbar nach der Suche nach "Izu City" https://premium-gift.jp/fujinokunigotoeat/use_store?events=search&id=&store=&addr=%E4%BC%8A%E8%B1%86%E5%B8%82&industry=
Weiter (2. Seite) https://premium-gift.jp/fujinokunigotoeat/use_store?events=page&id=2&store=&addr=%E4%BC%8A%E8%B1%86%E5%B8%82&industry=
Zurück (1. Seite) https://premium-gift.jp/fujinokunigotoeat/use_store?events=page&id=1&store=&addr=%E4%BC%8A%E8%B1%86%E5%B8%82&industry=
Der Unterschied zwischen der Seite unmittelbar nach der Suche und der Rückgabe (erste Seite) scheint darin zu bestehen, dass sich die URL zwischen "events = search" und "events = page" sowie "id =" und "id = 1" geändert hat.
Der Unterschied zwischen der Rückgabe (1. Seite) und der nächsten (2. Seite) ist "id = 1" und "id = 2", daher habe ich festgestellt, dass id die Anzahl der Seiten ist.
Zurück zur Testversion (1. Seite) Wenn Sie von der URL ausgehen, werden die Suchergebnisse nicht angezeigt, sodass die angezeigten Inhalte unterschiedlich sind.
Es scheint, dass Sie in der Reihenfolge von zugreifen können
Was die URL der nächsten Seite betrifft, habe ich die URL im Link des Kopfes gefunden. Wenn Sie versuchen, die nächste Seite unmittelbar nach der Suche von der Seite abzurufen, "id = 2", dann "id = 22", dann "id = 222". Eine Seite mit 2 erhöht wird zurückgegeben (w)
import requests
from bs4 import BeautifulSoup
import time
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
}
with requests.Session() as s:
#Keine Suche erforderlich, um alle zu erhalten
# url = "https://premium-gift.jp/fujinokunigotoeat/use_store"
#Im Falle einer Suche greifen Sie zu, nachdem Sie die Suchseite einmal angezeigt haben
s.get("https://premium-gift.jp/fujinokunigotoeat/use_store?events=search&id=&store=&addr=%E4%BC%8A%E8%B1%86%E5%B8%82&industry=")
url = "https://premium-gift.jp/fujinokunigotoeat/use_store?events=page&id=1&store=&addr=%E4%BC%8A%E8%B1%86%E5%B8%82&industry="
result = []
while True:
r = s.get(url, headers=headers)
r.raise_for_status()
soup = BeautifulSoup(r.content, "html.parser")
for store in soup.select("div.store-card__item"):
data = {}
data["Speichername"] = store.h3.get_text(strip=True)
for tr in store.select("table.store-card__table > tbody > tr"):
data[tr.th.get_text(strip=True).rstrip(":")] = tr.td.get_text(
strip=True
)
result.append(data)
tag = soup.select_one("head > link[rel=next]")
print(tag)
if tag:
url = tag.get("href")
else:
break
time.sleep(3)
import pandas as pd
df = pd.DataFrame(result)
#Bestätigung der Anzahl der Registrierungen
df.shape
df.to_csv("shizuoka.csv", encoding="utf_8_sig")
#Doppelte Bestätigung
df[df.duplicated()]
df
Recommended Posts