Python 财经新闻分析-取消绑定以从标记中提取数据并将其转换为文本

Python 财经新闻分析-取消绑定以从标记中提取数据并将其转换为文本,python,beautifulsoup,xmldatasource,Python,Beautifulsoup,Xmldatasource,我正在从网站中提取财务数据,并希望稍后将其存储在数据框中进行情绪分析 问题: import requests from bs4 import BeautifulSoup import pandas as pd url = "https://www.avanza.se/placera/rutor/alla-foretagsartiklar.7.19888.a.html" resp = requests.get(url) soup = BeautifulSoup(resp.content, fea

我正在从网站中提取财务数据,并希望稍后将其存储在数据框中进行情绪分析

问题:

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://www.avanza.se/placera/rutor/alla-foretagsartiklar.7.19888.a.html"
resp = requests.get(url)
soup = BeautifulSoup(resp.content, features="xml")
print(soup.prettify())
items = soup.findAll('div')
print(items)
# Checked single items and converted into text
print(items[0])
print(items[0].a.text)
print(items[0].p.text)
print(items[0].find("a", class_="plcReadMore"))
# Issue starts here when we process multiple items
list_items = []
for item in items:
    list_item = {}
    title_temp =
    list_item['title'] = item.a
    list_item['description'] = item.p
    # list_item['URL']= item.find("a", {"class": "plcReadMore"})
    list_item['URL'] = getattr(item.find("p", {"class": "plcReadMore"}), 'text', None)
    list_items.append(list_item)
print(list_items[0])
df = pd.DataFrame(list_items, columns=['title', 'description', 'URL'])
df.head() 
  • 当我使用for循环处理所有项目时,我无法
    将其转换为文本,从而生成带有标记的数据。(为了 单个项目,它可以工作)
  • 描述标签的开头和结尾都有
    /n
    。我怎么能 简单地移除它
  • 需要extarct URL。Tag
    “a”class=“plcReadMore”
    的URL 我喜欢提取问题-
    href
    存在于标签中,例如。 Läs hela>
  • 提取HTML数据并将其放入数据框进行进一步分析的Python代码:

    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    
    url = "https://www.avanza.se/placera/rutor/alla-foretagsartiklar.7.19888.a.html"
    resp = requests.get(url)
    soup = BeautifulSoup(resp.content, features="xml")
    print(soup.prettify())
    items = soup.findAll('div')
    print(items)
    # Checked single items and converted into text
    print(items[0])
    print(items[0].a.text)
    print(items[0].p.text)
    print(items[0].find("a", class_="plcReadMore"))
    # Issue starts here when we process multiple items
    list_items = []
    for item in items:
        list_item = {}
        title_temp =
        list_item['title'] = item.a
        list_item['description'] = item.p
        # list_item['URL']= item.find("a", {"class": "plcReadMore"})
        list_item['URL'] = getattr(item.find("p", {"class": "plcReadMore"}), 'text', None)
        list_items.append(list_item)
    print(list_items[0])
    df = pd.DataFrame(list_items, columns=['title', 'description', 'URL'])
    df.head() 
    
    源XML代码:

    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    
    url = "https://www.avanza.se/placera/rutor/alla-foretagsartiklar.7.19888.a.html"
    resp = requests.get(url)
    soup = BeautifulSoup(resp.content, features="xml")
    print(soup.prettify())
    items = soup.findAll('div')
    print(items)
    # Checked single items and converted into text
    print(items[0])
    print(items[0].a.text)
    print(items[0].p.text)
    print(items[0].find("a", class_="plcReadMore"))
    # Issue starts here when we process multiple items
    list_items = []
    for item in items:
        list_item = {}
        title_temp =
        list_item['title'] = item.a
        list_item['description'] = item.p
        # list_item['URL']= item.find("a", {"class": "plcReadMore"})
        list_item['URL'] = getattr(item.find("p", {"class": "plcReadMore"}), 'text', None)
        list_items.append(list_item)
    print(list_items[0])
    df = pd.DataFrame(list_items, columns=['title', 'description', 'URL'])
    df.head() 
    
    
    
    • 斯德哥尔摩(Nyhetsbyrån Direkt)博斯塔德斯普里塞纳一世斯维里奇sjönk 2,0年4月一日。Säsongsresrestat sjönk priserna 1,9 procent.Det visar Valueguards HOX-index.Bostadspriserna har sjunkit 1,2 procent根据den senaste tremån

      飞艇 Idag 06:00
    • 博斯塔德萨特维克拉伦·博纳瓦斯·斯泰雷尔塞奥德夫·兰德·米凯尔·诺曼·哈尔登15号,约5000亿美元。Aktierna köptes至kursen 38,92克朗/阿克提,建筑面积195 000克朗。阿法伦·乔德斯·斯德哥尔摩。金融调查局副局长

      鳍线 2020-05-15
    • 北欧货币基金组织(Nordea mäklade påfredagen en post på1,06 miljoner B-aktier i Bostadsutveckelaren Bonava inbördes)至库尔森38,16克朗/阿克提。Affärenär på40,4 miljoner kronor och motsvarar 1,0 procent av aktierna i bolaget。

      鳍线 2020-05-15
    • Bostadsutvecklaren Bonavas vd Joachim Hallengren harökat innehavet med 10000 aktier。截至366 594克朗,每阿克提66克朗。同步登记簿中的详细财务报表。

      鳍线 2020-05-15
    • (Omsändning:skickades första gången påtorsdagskvällen)斯德哥尔摩(Nyhetsbyrån Direkt)Joachim Hallengren,somär vd för bostadsutvecklaren Bonava,har påtorsdagen köpt 10000 aktier i bolaget för en köpess om närma 0.4 miljoner Kronr.详细信息

      飞艇 2020-05-15
    • 斯德哥尔摩(Nyhetsbyrån Direkt)Joachim Hallengren,somär vd för Bostadsutveckelaren Bonava,har påtorsdagen köpt 10000 aktier i bolaget för en köpeskilling om nämare 0,4 miljoner kronor.详细信息请参阅综合报告中的财务调查。克佩特

      飞艇 2020-05-14
    • 贝尔斯: 141 aktier påbörsen har fåett se sina Genomsnitliga riktkurser sänkas在de senaste sex månaderna的领导下。我将在50年前完成这项工作。

      卡尔兰斯 2020-05-13

    稍微修改了脚本以获得标题、说明和href。希望你的问题能得到在线解答

    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    
    url = "https://www.avanza.se/placera/rutor/alla-foretagsartiklar.7.19888.a.html"
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "lxml")
    base_url='https://www.avanza.se'
    
    items = soup.find_all('div',{'class':'item'})
    list_items = []
    for item in items:
        list_item = {}
        # === this gets title, description and href ===
        title=item.a.text
        description=item.find('p',{'class':'shortIntro'}).text.strip() # strip() removes whitespace around description
        href=item.find('a',{'class':'plcReadMore'}).get('href')
        #===============================================
        list_item['title'] = title
        list_item['description'] = description
        list_item['URL'] = base_url + href
        list_items.append(list_item)
    
    df = pd.DataFrame(list_items, columns=['title', 'description', 'URL'])
    

    谢谢,它起作用了:)出于好奇的问题-为什么我们使用r-conetnt和lxml?“r”只是我为请求-响应变量选择的名称。您可以将其重命名为代码中的“resp”
    lxml
    是一种更高效/更快的内容解析器。更常见的是“html.parser”。除非您使用大型数据集,否则您不会真正注意到它们之间的差异,直到那时,选择哪一个并不重要。有关解析器的更多信息,。非常感谢。这真的很有帮助。