【发布时间】:2020-10-30 00:10:58
【问题描述】:
目标:我想在从网站上抓取数据并将其缩小到感兴趣的表格后创建一个数据框(我希望获得所有国家/地区的人均肉类消费量在世界上)
问题:我有感兴趣的表,但无法将其放入数据框中。但是,我尝试的所有操作都以空白数据框结束。
输出:
<table class="wikitable sortable">
<caption>Countries by meat consumption per capita
</caption>
<tbody><tr>
<th>Country</th>
<th>kg/person (2002)<sup class="reference" id="cite_ref-9"><a href="#cite_note-9">[9]</a></sup><sup class="reference" id="cite_ref-11"><a href="#cite_note-11">[note 1]</a></sup></th>
<th>kg/person (2009)<sup class="reference" id="cite_ref-FAO2013_10-1"><a href="#cite_note-FAO2013-10">[10]</a></sup></th>
<th>kg/person (2017)<sup class="reference" id="cite_ref-12"><a href="#cite_note-12">[11]</a></sup>
</th></tr>
<tr>
<td><span class="flagicon"><img alt="" class="thumbborder" data-file-height="700" data-file-width="980" decoding="async" height="15" src="//upload.wikimedia.org/wikipedia/commons/thumb/3/36/Flag_of_Albania.svg/21px-Flag_of_Albania.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/36/Flag_of_Albania.svg/32px-Flag_of_Albania.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/36/Flag_of_Albania.svg/42px-Flag_of_Albania.svg.png 2x" width="21"/> </span><a href="/wiki/Albania" title="Albania">Albania</a></td>
<td>38.2</td>
<td></td>
<td>
</td></tr>
<tr>
<td><span class="flagicon"><img alt="" class="thumbborder" data-file-height="600" data-file-width="900" decoding="async" height="15" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Algeria.svg/23px-Flag_of_Algeria.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Algeria.svg/35px-Flag_of_Algeria.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Algeria.svg/45px-Flag_of_Algeria.svg.png 2x" width="23"/> </span><a href="/wiki/Algeria" title="Algeria">Algeria</a></td>
<td>18.3</td>
<td>19.5</td>
<td>17.33
</td></tr>
<tr>
<td><span class="flagicon"><img alt="" class="thumbborder" data-file-height="500" data-file-width="1000" decoding="async" height="12" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/87/Flag_of_American_Samoa.svg/23px-Flag_of_American_Samoa.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/87/Flag_of_American_Samoa.svg/35px-Flag_of_American_Samoa.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/87/Flag_of_American_Samoa.svg/46px-Flag_of_American_Samoa.svg.png 2x" width="23"/> </span><a href="/wiki/American_Samoa" title="American Samoa">American Samoa</a></td>
<td>24.9</td>
<td>26.8</td>
<td>
</td></tr>
<tr>
我希望提取以下列标题来获取世界上所有国家/地区人均肉类消费量的图表:国家,公斤/人(2002 年),公斤/人(2009 年),公斤/人(2017 年) )
我的代码:
A=[]
B=[]
C=[]
for row in table_meat1.findAll('tr'):
cells=row.findAll('td')
if len(cells)==3:
A.append(cells[0].find(text=True))
B.append(cells[1].find(text=True))
C.append(cells[2].find(text=True))
需要帮助将数据放入数据框中!
【问题讨论】:
-
您查看过维基百科的服务条款吗?有些网站不允许网页抓取。
-
有一些解决方案可以做到,但这是不道德的,你为什么不使用 web Wikipedia API?
-
我理解您的担忧 - 但是,我没有发现任何反对意见。网络抓取活动都是针对我正在学习的在线数据科学课程的。他们有练习,要求我们从维基百科上抓取网页。
-
对于这类作业,我认为没有任何问题。但是对于发布,你一定要检查它。
标签: python-3.x pandas beautifulsoup