我是這方面的新手,但我一直在嘗試在網站上抓取資料(https://awards.decanter.com/DWWA/2022/search/wines?competitionType=DWWA)但我一直空著。我嘗試過 BeautifulSoup 和 Scrapy,但我無法將文本輸出。
最終,我想將表中每種葡萄酒的行放入資料框/csv(來自所有頁面),但目前我什至無法獲得第一個葡萄酒生產商的名字。
如果您檢查網頁,所有詳細資訊都在沒有 id 或類的標簽中。
我的 BeautifulSoup 嘗試
URL = 'https://awards.decanter.com/DWWA/2022/search/wines?competitionType=DWWA'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52"}
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, "html.parser")
soup2 = soup.prettify()
producer = soup2.find_all('td').get_text()
print(producer)
這是拋出錯誤:
producer = soup2.find_all('td').get_text()
AttributeError: 'str' object has no attribute 'find_all'
我的 Scrapy 嘗試
winedf = pd.DataFrame()
class WineSpider(scrapy.Spider):
name = 'wine_spider'
def start_requests(self):
dwwa_url = "https://awards.decanter.com/DWWA/2022/search/wines?competitionType=DWWA"
yield scrapy.Request(url=dwwa_url, callback=self.parse_front)
def parse_front(self, response):
table = response.xpath('//*[@id="root"]/div/div[2]/div[4]/div[2]/table')
page_links = table.xpath('//*[@id="root"]/div/div[2]/div[4]/div[2]/div[2]/div[1]/ul/li[3]/a(@class,\
"dwwa-page-link") @href')
links_to_follow = page_links.extract()
for url in links_to_follow:
yield response.follow(url=url, callback=self.parse_pages)
def parse_pages(self, response):
wine_name = Selector(response=response).xpath('//*[@id="root"]/div/div[2]/div[4]/div[2]/table/tbody/\
tr[1]/td[1]/text()').get()
wine_name_ext = wine_name.extract().strip()
winedf.append(wine_name_ext)
medal = Selector(response=response).xpath('//*[@id="root"]/div/div[2]/div[4]/div[2]/table/tbody/tr[1]/\
td[4]/text()').get()
medal_ext = medal.extract().strip()
winedf.append(medal_ext)
產生并清空df。
任何幫助將不勝感激。
謝謝!
uj5u.com熱心網友回復:
當您加載要抓取的站點時,請始終使用網路監視器檢查它加載的內容。在這種情況下,您會看到它從 api 動態加載資料。這意味著您可以完全跳過抓取并將資料直接從 api 加載到 pandas 中:
import pandas as pd
df = pd.read_json('https://decanterresultsapi.decanter.com/api/DWWA/2022/wines/search?competitionType=DWWA')
這給出了所有 14858 個專案:
| 制片人 | 姓名 | ID | 競賽 | 獎 | 分數 | 國家 | 地區 | 子區域 | 優質的 | 顏色 | 風格 | 價格帶信 | 比賽年 | 比賽型別 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 伊蘭茲莊園葡萄酒 | 娃娃裝長相思 | 706484 | 2022 年世界婦女大會 | 7 | 88 | 新西蘭 | 馬爾堡 | 不適用 | 2021 | 白色的 | Still - Dry(殘糖低于 5 g/L) | 一個 | 2022 | 世界婦女協會 |
| 1 | 伊蘭茲莊園葡萄酒 | 儲備灰皮諾 | 706478 | 2022 年世界婦女大會 | 7 | 86 | 新西蘭 | 馬爾堡 | 不適用 | 2021 | 白色的 | Still - Dry(殘糖低于 5 g/L) | 乙 | 2022 | 世界婦女協會 |
| 2 | 伊蘭茲莊園葡萄酒 | 娃娃裝灰皮諾 | 706479 | 2022 年世界婦女大會 | 7 | 87 | 新西蘭 | 馬爾堡 | 不適用 | 2021 | 白色的 | Still - Dry(殘糖低于 5 g/L) | 一個 | 2022 | 世界婦女協會 |
| 3 | 伊蘭茲莊園葡萄酒 | 儲備霞多麗 | 705165 | 2022 年世界婦女大會 | 6 | 90 | 新西蘭 | 霍克斯灣 | 不適用 | 2021 | 白色的 | Still - Dry(殘糖低于 5 g/L) | 乙 | 2022 | 世界婦女協會 |
| 4 | 伊蘭茲莊園葡萄酒 | 儲備長相思 | 706486 | 2022 年世界婦女大會 | 6 | 90 | 新西蘭 | 馬爾堡 | 水谷 | 2021 | 白色的 | Still - Dry(殘糖低于 5 g/L) | 乙 | 2022 | 世界婦女協會 |
uj5u.com熱心網友回復:
嘗試:
import pandas as pd
url = "https://decanterresultsapi.decanter.com/api/DWWA/2022/wines/search?competitionType=DWWA"
df = pd.read_json(url)
# print last items in df:
print(df.tail().to_markdown())
印刷:
| 制片人 | 姓名 | ID | 競賽 | 獎 | 分數 | 國家 | 地區 | 子區域 | 優質的 | 顏色 | 風格 | 價格帶信 | 比賽年 | 比賽型別 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 14853 | 泰拉維酒窖 | 馬拉尼 | 718257 | 2022 年世界婦女大會 | 7 | 86 | 喬治亞州 | 卡赫季 | 金茲馬勞利 | 2021 | 紅色的 | Still - 中等(19 至 44 g/L 殘糖) | 乙 | 2022 | 世界婦女協會 |
| 14854 | 什特里戈娃 | 穆什卡特·茹蒂 | 716526 | 2022 年世界婦女大會 | 7 | 87 | 克羅地亞 | 大陸 | 扎戈耶 - Me?imurje | 2021 | 白色的 | Still - 中等(19 至 44 g/L 殘糖) | C | 2022 | 世界婦女協會 |
| 14855 | 科普亞爾 | 馬斯喀特 | 717754 | 2022 年世界婦女大會 | 7 | 86 | 克羅地亞 | 大陸 | 扎戈耶 - Me?imurje | 2021 | 白色的 | Still - 中等(19 至 44 g/L 殘糖) | C | 2022 | 世界婦女協會 |
| 14856 | 克萊布隆-古格林根 | Blanc De Noir Fein & Fruchtig | 719836 | 2022 年世界婦女大會 | 7 | 87 | 德國 | 符騰堡州 | 不適用 | 2021 | 白色的 | Still - 中等(19 至 44 g/L 殘糖) | 乙 | 2022 | 世界婦女協會 |
| 14857 | 溫妮絲·查科夫斯基 | 托馬 8 大精選 | 719891 | 2022 年世界婦女大會 | 6 | 90 | 波蘭 | 不適用 | 不適用 | 2021 | 白色的 | Still - 中等(19 至 44 g/L 殘糖) | D | 2022 | 世界婦女協會 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/519391.html
上一篇:按鈕不斷出現并重新出現
