Web scraping Webscraping bs4-将来自不同URL的重新结果排序到表中

Web scraping Webscraping bs4-将来自不同URL的重新结果排序到表中,web-scraping,beautifulsoup,Web Scraping,Beautifulsoup,我已经写了下面的脚本刮一个网站。 我已经漏掉了网址,如果你需要这封信给我,我会提供给你 当前的输出有点混乱,但它可以完成任务。 我是一个非常新手,所以如果你有任何建议,如何提高刮它自己请告诉我 我正在寻找帮助,将结果组织成如下表: |来源|列| | -------- | -------------- | |url1 |值| |url2 |值| 专栏:Antal aktier、Börsvärde MSEK、Direktavkastning%、P/E-tal、P/S-tal等 数据1中的值:5984

我已经写了下面的脚本刮一个网站。 我已经漏掉了网址,如果你需要这封信给我,我会提供给你

当前的输出有点混乱,但它可以完成任务。 我是一个非常新手,所以如果你有任何建议,如何提高刮它自己请告诉我

我正在寻找帮助,将结果组织成如下表:

|来源|列| | -------- | -------------- | |url1 |值| |url2 |值| 专栏:Antal aktier、Börsvärde MSEK、Direktavkastning%、P/E-tal、P/S-tal等

数据1中的值:59840000、5084,00、0,00、11,11、0,59等

数据2中的值:14532434、2284、50、2、70、9、73、0、52等

关于如何解决这个问题的IDE非常受欢迎

脚本:

import bs4 
import requests
import re
from bs4 import BeautifulSoup as bs

URL1 = "XXX"
URL2 ="YYY"

r1 = requests.get(URL1)
r2 = requests.get(URL2)

soup1 = bs(r1.content)
soup2 = bs(r2.content)

data1 = soup1.find_all('dl', attrs= {"class": "border XSText rightAlignText noMarginTop highlightOnHover thickBorderBottom noTopBorder"})
data2 = soup2.find_all('dl', attrs= {"class": "border XSText rightAlignText noMarginTop highlightOnHover thickBorderBottom noTopBorder"})


print(data1[1])
print(data2[1])
网络垃圾输出:

<dt><span>Antal aktier</span></dt>
<dd><span>59 840 000</span></dd>
<dt><span>Börsvärde MSEK</span></dt>
<dd><span>5 084,00</span></dd>
<dt><span>Direktavkastning %</span></dt>
<dd><span>0,00</span></dd>
<dt><span>P/E-tal</span></dt>
<dd><span>11,11</span></dd>
<dt><span>P/S-tal</span></dt>
<dd><span>0,59</span></dd>
<dt><span>Kurs/eget kapital </span></dt>
<dd><span>2,60</span></dd>
<dt><span>Omsättning/aktie SEK</span></dt>
<dd><span>132,00</span></dd>
<dt><span>Vinst/aktie SEK</span></dt>
<dd><span>6,98</span></dd>
<dt><span>Eget kapital/aktie SEK</span></dt>
<dd><span>29,55</span></dd>
<dt><span>Försäljning/aktie SEK</span></dt>
<dd><span>-</span></dd>
<dt><span>Effektivavkastning %</span></dt>
<dd><span>0,00</span></dd>
<dt><span>Antal ägare hos Avanza</span></dt>
<dd><span>16 041</span></dd>
</dl>
<dl class="border XSText rightAlignText noMarginTop highlightOnHover thickBorderBottom noTopBorder">
<dt><span>Antal aktier</span></dt>
<dd><span>14 532 434</span></dd>
<dt><span>Börsvärde MSEK</span></dt>
<dd><span>2 284,50</span></dd>
<dt><span>Direktavkastning %</span></dt>
<dd><span>2,70</span></dd>
<dt><span>P/E-tal</span></dt>
<dd><span>9,73</span></dd>
<dt><span>P/S-tal</span></dt>
<dd><span>0,52</span></dd>
<dt><span>Kurs/eget kapital </span></dt>
<dd><span>2,73</span></dd>
<dt><span>Omsättning/aktie SEK</span></dt>
<dd><span>303,47</span></dd>
<dt><span>Vinst/aktie SEK</span></dt>
<dd><span>16,16</span></dd>
<dt><span>Eget kapital/aktie SEK</span></dt>
<dd><span>58,34</span></dd>
<dt><span>Försäljning/aktie SEK</span></dt>
<dd><span>-</span></dd>
<dt><span>Effektivavkastning %</span></dt>
<dd><span>2,70</span></dd>
<dt><span>Antal ägare hos Avanza</span></dt>
<dd><span>3 994</span></dd>
</dl>```
安塔尔阿克蒂尔酒店 59 840 000 贝尔斯沃德·姆塞克 5 084,00 Direktavkastning% 0,00 市盈率 11,11 P/S-tal 0,59 库尔斯/埃吉特卡皮塔尔 2,60 Omsättning/aktie SEK 132,00 文斯特/阿克提塞克 6,98 Eget kapital/aktie SEK 29,55 Försäljning/aktie SEK - Effektivavkastning% 0,00 安塔拉加尔·霍斯·阿万扎 16 041 安塔尔阿克蒂尔酒店 14 532 434 贝尔斯沃德·姆塞克 2 284,50 Direktavkastning% 2,70 市盈率 9,73 P/S-tal 0,52 库尔斯/埃吉特卡皮塔尔 2,73 Omsättning/aktie SEK 303,47 文斯特/阿克提塞克 16,16 Eget kapital/aktie SEK 58,34 Försäljning/aktie SEK - Effektivavkastning% 2,70 安塔拉加尔·霍斯·阿万扎 3 994 ```
有很多方法可以解决这个问题! 查看您的输出告诉我们,
元素保存列名,
元素保存值。因此,我们可以遍历它们并将数据附加到列表中

column_list = []
value_list = []

columns = soup1.find_all('dt')
for col in columns:
    column_list.append(col.text.strip()) # strip() removes extra space from the text    

values = soup1.find_all('dd')
for val in values:
    value_list.append(val.text.strip())

for i in range(len(column_list)):
    print(column_list[i] + ': ' + value_list[i])
现在,您可以根据需要使用列表中的数据。它当前提供如下输出:

Kortnamn: AAPL
ISIN: US0378331005
Marknad: NASDAQ
Bransch: Teknik
Handlas i: USD
Beta: 1,1927
Volatilitet %: 24,99
Belåningsvärde %: 60
Säkerhetskrav %: 150
Superränta: Ja
Blankningsbar: Nej
Antal aktier: 17 001 802 000
Börsvärde MUSD: 2 226 555,99
Direktavkastning %: 0,62
P/E-tal: 38,24
P/S-tal: 8,16
Kurs/eget kapital: 31,05
Omsättning/aktie USD: 16,05
Vinst/aktie USD: 3,42
Eget kapital/aktie USD: 4,25
Försäljning/aktie USD: -
Effektivavkastning %: 0,62
Antal ägare hos Avanza: 34 331

谢谢你帮了我大忙。