BeautifulSoup,lmxl 未下载时间文本
BeautifulSoup, lmxl not downloading time text
我正在尝试从网站下载数据,一切正常,除了遇到日期时,它只会 return“”。我查看了下载到程序中的 html,它在标签之间没有任何内容,这就是为什么它 return 什么也没有。当您在线检查 html 时,您可以清楚地看到它。有人有什么想法吗?
from bs4 import BeautifulSoup
import requests
stocks=["3PL"]
keys = list()
values = list()
for stock in stocks:
source = requests.get(r"https://www.reuters.com/companies/" + stock + ".AX/key-metrics").text
soup = BeautifulSoup(source, 'lxml')
for data in soup.find_all("tr", class_="data"):
keys.append(data.th.text)
if data.td.text != "--":
values.append(data.td.text)
else:
values.append("nan")
print(keys[3])
print(values[3]) #This should return the date
您的数据似乎添加了 javascript。这是 requests 不会处理的事情,因为它不会像普通浏览器那样呈现页面。只获取原始数据。
但是,您可以使用 selenium
包来成功完成此操作。要安装这个:
pip install selenium
您可能需要设置一些网络驱动程序才能使用 Firefox,或者 Chrome。但在下面的案例中,我使用的是开箱即用的浏览器,即 Safari。
我已经稍微调整了你的代码以使用 selenium 包,并将你的数据放入字典中以保持更好的一致性。
from bs4 import BeautifulSoup
from selenium import webdriver
import requests
stocks=["3PL"]
response_data = {}
driver = webdriver.Safari()
for stock in stocks:
url = r"https://www.reuters.com/companies/" + stock + ".AX/key-metrics"
driver.get(url)
source = driver.page_source
soup = BeautifulSoup(source)
for data in soup.find_all("tr", class_="data"):
if data.td.text != "--":
response_data[data.th.text] = data.td.text
else:
response_data[data.th.text] = 'nan'
driver.close()
现在您可以检查数据是否正确下载:
print(response_data['Pricing date'])
Sep-04
我正在尝试从网站下载数据,一切正常,除了遇到日期时,它只会 return“”。我查看了下载到程序中的 html,它在标签之间没有任何内容,这就是为什么它 return 什么也没有。当您在线检查 html 时,您可以清楚地看到它。有人有什么想法吗?
from bs4 import BeautifulSoup
import requests
stocks=["3PL"]
keys = list()
values = list()
for stock in stocks:
source = requests.get(r"https://www.reuters.com/companies/" + stock + ".AX/key-metrics").text
soup = BeautifulSoup(source, 'lxml')
for data in soup.find_all("tr", class_="data"):
keys.append(data.th.text)
if data.td.text != "--":
values.append(data.td.text)
else:
values.append("nan")
print(keys[3])
print(values[3]) #This should return the date
您的数据似乎添加了 javascript。这是 requests 不会处理的事情,因为它不会像普通浏览器那样呈现页面。只获取原始数据。
但是,您可以使用 selenium
包来成功完成此操作。要安装这个:
pip install selenium
您可能需要设置一些网络驱动程序才能使用 Firefox,或者 Chrome。但在下面的案例中,我使用的是开箱即用的浏览器,即 Safari。
我已经稍微调整了你的代码以使用 selenium 包,并将你的数据放入字典中以保持更好的一致性。
from bs4 import BeautifulSoup
from selenium import webdriver
import requests
stocks=["3PL"]
response_data = {}
driver = webdriver.Safari()
for stock in stocks:
url = r"https://www.reuters.com/companies/" + stock + ".AX/key-metrics"
driver.get(url)
source = driver.page_source
soup = BeautifulSoup(source)
for data in soup.find_all("tr", class_="data"):
if data.td.text != "--":
response_data[data.th.text] = data.td.text
else:
response_data[data.th.text] = 'nan'
driver.close()
现在您可以检查数据是否正确下载:
print(response_data['Pricing date'])
Sep-04