1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
為抓取添加一個(gè)配置,其中每個(gè)配置都是這樣的:
prices = {
"LIVEAUOZ": {
"url": "https://www.gold.co.uk/",
"trader": "Gold.co.uk",
"metal": "Gold",
"type": "LiveAUOz",
"price": {
"selector": '#id > div > table > tr',
"parser": lambda x: float(re.sub(r"[^0-9\.]", "", x))
}
}
}
使用 price 的選擇器部分獲取 HTML 的相關(guān)部分,然后使用解析器函數(shù)對(duì)其進(jìn)行解析。
例如
for key, config in prices.items():
response = requests.get(config['url'])
soup = BeautifulSoup(response.text, 'html.parser')
price_element = soup.find(config['price']['selector'])
if price_element:
AG_GRAM_SPOT = price_element.get_text()
# convert to float
AG_GRAM_SPOT = config['price']['parser'](AG_GRAM_SPOT)
# etc
您可以根據(jù)需要修改配置對(duì)象,但對(duì)于大多數(shù)站點(diǎn)來(lái)說(shuō)它可能非常相似。例如,文本解析很可能總是相同的,所以不用 lambda 函數(shù),而是用 def 創(chuàng)建一個(gè)函數(shù)。
def textParser(text):
return float(re.sub(r"[^0-9\.]", "", text))
然后在配置中添加對(duì) textParser 的引用。
prices = {
"LIVEAUOZ": {
"url": "https://www.gold.co.uk/",
"trader": "Gold.co.uk",
"metal": "Gold",
"type": "LiveAUOz",
"price": {
"selector": '#id > div > table > tr',
"parser": textParser
}
}
}
這些步驟將允許您編寫通用代碼,保存所有那些嘗試異常。
添加回答
舉報(bào)