html 无法使用Python从网站获取数据[已关闭]

dohp0rv5  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(101)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
Improve this question
我刚开始用Python编程,我想获取一些财务数据并处理它。我在从这个页面获取数据时遇到了困难:text
我做错了什么,即使我不知道在哪里,因为,当我试图从html中提取特定部分时,终端不打印任何内容或显示错误消息
这是我尝试的一个例子

import requests
from bs4 import BeautifulSoup

response = requests.get('https://www.borsaitaliana.it/borsa/obbligazioni/mot/btp/lista.html?lang=it')

soup = BeautifulSoup(response.text, 'html.parser')

table = soup.find('table')

rows = table.find_all('tr')

for row in rows:
    cells = row.find_all('td')
    print([cell.text for cell in cells])

我不明白为什么我会收到错误消息:

rows = table.find_all('tr')
AttributeError: 'NoneType' object has no attribute 'find' "
emeijp43

emeijp431#

问题是你第一次搜索soup.find('table')没有找到结果,因此返回None(find_all为空列表)。没有找到结果的原因是因为网页是动态构建的(这里就是这种情况)或者html中有一个小错误。
一个简单的解决方案可能是使用Selenium和一个webdriver,注意,这在计算方面相当繁重,可能被认为是矫枉过正。

import requests
from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()

response = driver.get('https://www.borsaitaliana.it/borsa/obbligazioni/mot/btp/lista.html?lang=it')

soup = BeautifulSoup(driver.page_source, 'html.parser')

table = soup.find('table')

rows = table.find_all('tr')

for row in rows:
    cells = row.find_all('td')
    print([cell.text for cell in cells])

这个解决方案将在Firefox中打开网页并从中检索html,这取决于您要查找的内容,可能并不理想。然而,BeautifulSoup和Selenium的组合可能正是您要查找的内容。

相关问题