我正在尝试使用Selenium抓取一个网站。https://media.japanmetaldaily.com/market/list/
我只想抓取少数金属的数据,并将其附加在一个excel文件中,然而,在这个网站上,数据实际上并不在网页上。当我点击href时,它会直接将数据下载为excel文件。禁止从href获取数据源。
<a href="https://media.japanmetaldaily.com/data/KS10001.xls"onclick=";pageTracker_trackEvent('market_list','download','異形棒鋼_直送_SD295_19ミリ');"gt;
我可以下载多个excel文件,然后对它们进行操作,但这完全违背了网络抓取的概念。在这种情况下,有没有一种方法可以查看数据,然后将其写入数据帧?非常感谢您的帮助/指导。
您需要的工具有漂亮的汤和请求库。
向网站请求获取html。然后用漂亮的汤,列出excel电子表格的链接列表。
然后循环浏览链接并使用请求库获取它们。XLS使用XML,所以您也可以使用漂亮的汤来刮取电子表格。
这应该是所需要的所有步骤。
试试这个代码:
from io import BytesIO
import urllib
def load_workbook_from_url(url):
file = urllib.request.urlopen(url).read()
return load_workbook(filename = BytesIO(file),data_only = True)
wb=load_workbook_from_url("URL")
#get worksheets name in each sheet together in a dictionary
worksheets_tables ={}
for name in wb.sheetnames:
worksheets_tables[name]=[]
if bool(wb[name].tables.keys()):
for tables in wb[name].tables.keys():
worksheets_tables[name].append(tables)
else:
continue