2016-04-07 24 views
1

Bu web sitesini ayrıştırmaya çalışıyorum: https://www.scutify.com/stocks.html Çerçevelerdeki sorunlardan dolayı (HTML'de yeniyim), ayrıştırmak için BeautifulSoup kullandığımda stokları (1-800-Flowers gibi) göstermedim html bağlantısı. Öyleyse size bir htm dosyası olarak kaydedilir ve şimdi Ancakİç içe geçmiş öğeleri BeautifulSoup ile nasıl ayrıştırabilirim?

downloadedfile = "C:/Users/vwxyz/Downloads/Stocks_ETFs.htm" 
htm = open(downloadedfile,'r') 
soup = BeautifulSoup(htm) 
stocklist = soup.find("ul",class_= "company-list list-group") 
print(stocklist) 

altına senaryoyu denedik

<title>Stocks/ETFs Listing - US, Canadian, UK, Australian and Indian Stocks on Scutify</title> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<meta name="description" content="Listing of US, Canadian, UK, Australian and Indian Stocks and ETFs available on Scutify"> 
<meta name="keywords" 
<ul class="company-list list-group" id="us-list"> 
<li class="list-group-item"> 
    <a href="https://www.scutify.com/company.aspx?ticker=FLWS">1-800-Flowers.Com Inc - (FLWS)</a></li> 
<li class="list-group-item"> 
    <a href="https://www.scutify.com/company.aspx?ticker=FOX">21st Century Fox Inc - (FOX)</a></li> 
.... 

gibi

htm dosyası görünüyor stokları görebilirsiniz daha sonra dışarı yazdıran bir devasa demet metin. Ben sadece stokların bir listesi istiyorum, bu

Herhangi biri yardımcı olabilir mi? Stoktaki öğeleri üzerinde

+0

Stoktaki ürünlere geri dönebilir misiniz? –

+0

İndirme dosyanızı nasıl edinirsiniz. Alabilirsem, kodunuza bakacağım –

+0

http://pastebin.com/QnWhDaby – vwxyz

cevap

0

Bıkmadan listeleme ve parantez içinde yer ayıklamak:

\(([A-Z]+)\)$ (bir grup yakalanan) bir veya birden fazla harf harf ile bunları izleyen bir parantez açma eşleşir
import re 

soup = BeautifulSoup(htm, "html.parser") 

pattern = re.compile(r"\(([A-Z]+)\)$") 
for item in soup.select(".company-list .list-group-item"): 
    match = pattern.search(item.get_text()) 
    if match: 
     print(match.group(1)) 

, dizenin sonunda kapanış parantezi izler.

+0

vay Bu çalıştı, teşekkürler! – vwxyz

İlgili konular