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, find и findAll все, что я хочу, это для того, чтобы выплевывать левую самую таблицу, например

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, используйте это. Но в данном URL-адресе нет полезного 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

Смежные вопросы