Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将BeautifulSoup数据放入Pandas数据框-显示为空白_Python 3.x_Pandas_Beautifulsoup - Fatal编程技术网

Python 3.x 将BeautifulSoup数据放入Pandas数据框-显示为空白

Python 3.x 将BeautifulSoup数据放入Pandas数据框-显示为空白,python-3.x,pandas,beautifulsoup,Python 3.x,Pandas,Beautifulsoup,目标:我想在从一个网站上抓取数据并将其缩小到感兴趣的表格后创建一个数据框架(我希望得到世界上所有国家的人均肉类消费量) 问题:我有感兴趣的表格,但在将其放入数据框时遇到问题。然而,我尝试的每件事都以一个空白数据框结束 输出: <table class="wikitable sortable"> <caption>Countries by meat consumption per capita </caption> <tbody>

目标:我想在从一个网站上抓取数据并将其缩小到感兴趣的表格后创建一个数据框架(我希望得到世界上所有国家的人均肉类消费量)

问题:我有感兴趣的表格,但在将其放入数据框时遇到问题。然而,我尝试的每件事都以一个空白数据框结束

输出:

<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>

需要帮助将数据放入数据框中

这个问题的答案是:

将Selenium与chrome驱动程序一起使用,为此,您可以使用:

pip install selenium
然后从我检查过的操作系统86.0.4240.22版下载合适的chrome驱动程序,它运行良好

解压并将其放在如下位置:
/Users/admin/software/chromedriver

然后运行此代码

from selenium import webdriver

URL = 'https://www.amazon.com/Metagenics-Ultra-Potent-C-1000-Count/dp/B004GLEUHI/ref=sr_1_2_sspa?crid=11YWA9XFVALBP&dchild=1&keywords=metagenics&qid=1603050330&sprefix=metageni%2Caps%2C224&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUFRRDdMVU5GNDFKQ1QmZW5jcnlwdGVkSWQ9QTA1NTc3NzAxSFYxV0k5MlFGUUZTJmVuY3J5cHRlZEFkSWQ9QTA2MzM0MzAyWDBDSjNCNlFGRVJNJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ=='


options = webdriver.ChromeOptions()
options.add_argument('headless')

driver = webdriver.Chrome("/Users/admin/software/chromedriver",chrome_options=options)
driver.implicitly_wait(5)
driver.get(URL)
content = driver.page_source;
soup = BeautifulSoup(content)
price=soup.find('table', class_='wikitable sortable')
print(price)

但是请注意,某些网站上禁止网络抓取,您必须使用其提供的web API。

您是否查看了Wikipedia的服务条款?有些网站不允许网络抓取。有一些解决方案可以做到这一点,但这是不道德的,你为什么不使用web Wikipedia API?我理解你的担忧-但是,我没有发现任何反对它的东西。我正在参加的在线数据科学课程都有网络抓取活动。他们有一些练习,要求我们从维基百科上浏览网页。对于这类作业,我认为没有任何问题。但对于出版物,你们应该检查它。谢谢你们,我应该更清楚一点——我已经能够进行web刮取,但无法将其放入数据框中。当我试着把它放在一个数据帧中时,我仍然得到一个空的数据帧集。你的意思是你最终会得到一个空的列表吗?我正试图从网络抓取数据并创建一个数据框…我猜我的代码会带来一个空的列表。你知道我如何提取数据并将其放入一个有组织的数据框架中吗?我真的很感谢你的帮助。你能添加你的代码来刮这个页面吗?然后解释你到底想要什么?上面原始帖子中的“输出”是我从网络上得到的。我想把它放到一个数据框中。在“产出”中,有4栏标题为:“国家”、“千克/人(2002年)”、“千克/人(2009年)”和“千克/人(2017年)”。这是4列标题,之后所有信息都在那里。我只需要一种方法将其放入数据帧表中。
from selenium import webdriver

URL = 'https://www.amazon.com/Metagenics-Ultra-Potent-C-1000-Count/dp/B004GLEUHI/ref=sr_1_2_sspa?crid=11YWA9XFVALBP&dchild=1&keywords=metagenics&qid=1603050330&sprefix=metageni%2Caps%2C224&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUFRRDdMVU5GNDFKQ1QmZW5jcnlwdGVkSWQ9QTA1NTc3NzAxSFYxV0k5MlFGUUZTJmVuY3J5cHRlZEFkSWQ9QTA2MzM0MzAyWDBDSjNCNlFGRVJNJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ=='


options = webdriver.ChromeOptions()
options.add_argument('headless')

driver = webdriver.Chrome("/Users/admin/software/chromedriver",chrome_options=options)
driver.implicitly_wait(5)
driver.get(URL)
content = driver.page_source;
soup = BeautifulSoup(content)
price=soup.find('table', class_='wikitable sortable')
print(price)