我正在尝试学习如何使用Beautiful Soup,从Wikipedia中抓取一张桌子时遇到了问题。
from bs4 import BeautifulSoup
import urllib2
wiki = 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'
page = urllib2.urlopen(wiki)
soup = BeautifulSoup(page, 'lxml')
print soup
似乎我无法获得完整的维基百科表,但我使用此代码获得的最后一个条目是Omnicon Group
,它在源代码中获取/tr
之前就停止了。如果你签入原始链接,表格的最后一个条目是Zoetis
,所以它会在中途停止。
维基百科源代码中的一切似乎都没问题......对于我可能做错了什么的想法?
答案 0 :(得分:1)
试试这个。阅读此内容以获取更多http://www.crummy.com/software/BeautifulSoup/bs4/doc/
from bs4 import BeautifulSoup
from urllib.request import urlopen
wiki = 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'
page = urlopen(wiki)
soup = BeautifulSoup(page, 'lxml')
result = soup.find("table", class_="wikitable")
print(result)
这应该是结果中的最后一个<tr>
<tr>
<td><a class="external text" href="https://www.nyse.com/quote/XNYS:ZTS" rel="nofollow">ZTS</a></td>
<td><a href="/wiki/Zoetis" title="Zoetis">Zoetis</a></td>
<td><a class="external text" href="http://www.sec.gov/cgi-bin/browse-edgar?CIK=ZTS&action=getcompany" rel="nofollow">reports</a></td>
<td>Health Care</td>
<td>Pharmaceuticals</td>
<td><a href="/wiki/Florham_Park,_New_Jersey" title="Florham Park, New Jersey">Florham Park, New Jersey</a></td>
<td>2013-06-21</td>
<td>0001555280</td>
</tr>
您还需要使用pip install requests
和我使用
python==3.4.3
beautifulsoup4==4.4.1
答案 1 :(得分:1)
这是我的工作答案。它应该适用于你甚至没有安装lxml。 我用过Python 2.7
from bs4 import BeautifulSoup
import urllib2
wiki = 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'
page = urllib2.urlopen(wiki)
soup = BeautifulSoup(page, "html.parser")
print soup.table