Web scraping Webscraping bs4-将来自不同URL的重新结果排序到表中
我已经写了下面的脚本刮一个网站。 我已经漏掉了网址,如果你需要这封信给我,我会提供给你 当前的输出有点混乱,但它可以完成任务。 我是一个非常新手,所以如果你有任何建议,如何提高刮它自己请告诉我 我正在寻找帮助,将结果组织成如下表: |来源|列| | -------- | -------------- | |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非常受欢迎 脚本: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
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
谢谢你帮了我大忙。