Python追加添加相同的数据

标签 python beautifulsoup

我正在尝试从韩国网站提取股票价格和市值数据。

这是我的代码:

import requests
from bs4 import BeautifulSoup
 
response = requests.get('http://finance.naver.com/sise/sise_market_sum.nhn?sosok=0&page=1')
html = response.text
soup = BeautifulSoup(html, 'html.parser')

table = soup.find('table', { 'class': 'type_2' })
data = []
for tr in table.find_all('tr'):
    tds = list(tr.find_all('td')) 

    for td in tds:
        if td.find('a'):
            company_name = td.find('a').text 
            price_now = tds[2].text
            market_cap = tds[5].text 
            data.append([company_name, price_now, market_cap])    

 
print(*data, sep = "\n")

这就是我得到的结果。 (对不起韩文字符)

['삼성전자', '43,650', '100']

['', '43,650', '100']

['SK하이닉스', '69,800', '5,000']

['', '69,800', '5,000']

结果中的第二行和第四行不应该存在。我只想要第一行和第三行。第二行和第四行来自哪里?我该如何摆脱它们?

最佳答案

我亲爱的 friend ,我认为问题是你应该检查 td.find('a').text 是否有值!

所以我将您的代码更改为这个并且它有效!

import requests
from bs4 import BeautifulSoup

response = requests.get(
    'http://finance.naver.com/sise/sise_market_sum.nhn?sosok=0&page=1')
html = response.text
soup = BeautifulSoup(html, 'html.parser')

table = soup.find('table', {'class': 'type_2'})
data = []
for tr in table.find_all('tr'):
    tds = list(tr.find_all('td'))

    for td in tds:
        # where magic happends!
        if td.find('a') and td.find('a').text:
            company_name = td.find('a').text
            price_now = tds[2].text
            market_cap = tds[5].text
            data.append([company_name, price_now, market_cap])

print(*data, sep="\n")

关于Python追加添加相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53370221/

相关文章:

python - 有人可以帮我理解 python 中的 for 循环吗

python - 从函数调用 DataFrame .head() 时不起作用

python - 在函数中调用时未定义 BeautifulSoup

python - 有没有更好的方法来抓取这些数据?

发送图像时出现 Python 套接字错误。无法解码字节/意外的 EOF

python - 在Python 2.7中将.po文件转换为json

Python 脚本,参数未传输到脚本

python - urllib.open() 无法处理带有 # 的字符串?

python - 使用 Python 中的 BeautifulSoup 揭示网站上缺失的标签

python - 从剥离代码中删除无值的函数