2014-01-21 29 views
2

我试图解析该地址内表中解析表:用这个和这个代码的改变尝试表

LINK

import urllib 
import urllib.request 
from bs4 import BeautifulSoup 

url=('http://www.bricklink.com/catalogPriceGuide.asp?P=3005&colorID=1&viewExclude=N&v=P') 
page = urllib.request.urlopen(url) 
soup = BeautifulSoup(page.read()) 
content = soup.find('table') 
price=content.findAll('td') 

print(price) 

我试着几乎所有的组合table,findfindAll我想要的就是让它吐出最左边的桌子,就像

Times Sold: 2958 
Total Qty: 130610 
Min Price: $0.0136 
Avg Price: $0.0690 
Qty Avg Price: $0.0659 
Max Price: $0.3900 

任何人都可以告诉我我做错了什么,并指出我在正确的方向吗?

+0

FYI:“*我们要求您不要使用任何机器人,蜘蛛,其他自动设备或手动过程监控或复制我们的网页或所包含的内容这里没有我们事先明确的书面许可。*“ - http://www.bricklink.com/help.asp?helpID=139&viewType= –

回答

2

如果有一些id,class,请使用它。但在给定的网址中,没有有用的id,class

使用文字文本如下:

>>> import re 
>>> import urllib.request 
>>> 
>>> from bs4 import BeautifulSoup 
>>> 
>>> 
>>> url = 'http://www.bricklink.com/catalogPriceGuide.asp?P=3005&colorID=1&viewExclude=N&v=P' 
>>> page = urllib.request.urlopen(url) 
>>> soup = BeautifulSoup(page.read()) 
>>> td = soup.find('td', text=re.compile('Times Sold')) 
>>> tr_list = td.parent.parent.find_all('tr') 
>>> for tr in tr_list: 
...  print(' '.join(td.text for td in tr.find_all('td'))) 
... 
Times Sold: 2958 
Total Qty: 130610 
Min Price: $0.01 
Avg Price: $0.07 
Qty Avg Price: $0.07 
Max Price: $0.39 
+0

就是这样!非常感谢! – user1985351