如何使用Web抓取从实时表中获取数据?

时间:2019-05-15 13:22:47

标签: web-scraping beautifulsoup

我试图通过使用Python直接从网站下载数据来建立活动表。我想我正在按照所有步骤执行操作,但是仍然无法从上述表格中获取数据。

我已经参考了许多网页和博客来尝试纠正此处的问题,但未成功。我想要这里的堆栈溢出社区的帮助。

以下是表格网站,我试图从中获取数据的页面上只有一个表格:

https://etfdb.com/themes/smart-beta-etfs/#complete-list__esg&sort_name=assets_under_management&sort_order=desc&page=1

表中的数据部分可免费获得,其余的则需付费。因此,我想这就是问题所在,但我认为我应该能够下载免费数据。但是由于这是我第一次尝试并考虑到我是Python的初学者,所以我可能是错的。因此,感谢所有帮助。

代码如下:

...
@Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap = googleMap;
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(13.807303, 100.518261), 16));
}
...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mMapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map_fragment);
    mMapFragment.getMapAsync(this);

    mStartAnimationSequenceButton= (Button) findViewById(R.id.button_start_animation);
    mStartAnimationSequenceButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mGoogleMap != null) {
                CameraUpdate location1 = CameraUpdateFactory.newLatLngZoom(new LatLng(13.747871, 100.488370), 16);
                CameraUpdate location2 = CameraUpdateFactory.newLatLngZoom(new LatLng(13.726253, 100.512301), 16);
                CameraUpdate location3 = CameraUpdateFactory.newLatLngZoom(new LatLng(13.692890, 100.490688), 16);

                mAnimationManager = new CameraAnimationManager(mGoogleMap);
                mAnimationManager.addAnimation(new CameraAnimationManager.CameraAnimation(location1, 3000) );
                mAnimationManager.addAnimation(new CameraAnimationManager.CameraAnimation(location2, 3000) );
                mAnimationManager.addAnimation(new CameraAnimationManager.CameraAnimation(location3, 3000) );
                mAnimationManager.startAnimation();
            }
        }
    });
}

当我运行table命令时,即使网站上有可用的表,它也没有提供任何数据,并且该字段完全为空。所有帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

页面对此信息再次发出请求,该请求返回您可以解析的json

-Djava.library.path=<your-workspace-path>/<your-project>/src/main/resources/osx/

某些键(用于输出列Symbol和ETF Name的键-键import requests r = requests.get('https://etfdb.com/data_set/?tm=77630&cond=&no_null_sort=&count_by_id=&sort=assets_under_management&order=desc&limit=25&offset=0').json() symbol)与html关联,因此您可以使用bs4处理这些值并提取最终所需的结果;其他键值对很简单。

例如,如果您循环json中的每一行

name

您将获得用于解析的行,其中两项需要this之类的bs4。


Python:

for row in r['rows']:
    print(row)
    break

答案 1 :(得分:0)

我想使用> tag("thead", "This is my thead") <thead>This is my thead</thead> 数据帧来提取表并可以将其导出到csv中。

pandas