2016-06-16 4 views
0

В настоящее время мой код анализирует по ссылке и распечатывает всю информацию с веб-сайта. Я хочу только напечатать одну конкретную строку с веб-сайта. Как я могу это сделать?Печать определенной строки (Beautifulsoup)

Вот мой код:

from bs4 import BeautifulSoup 
import urllib.request 

r = urllib.request.urlopen("Link goes here").read() 
soup = BeautifulSoup(r, "html.parser") 

# This is what I want to change. I currently have it printing everything. 
# I just want a specific line from the website 

print (soup.prettify()) 
+0

Какую строку вы хотите? Есть намного лучшие и точные способы, чем использование prettify, разделение строк и индексация будет ломаться с наименьшим изменением на html –

+0

Я хочу, чтобы строка, которая говорит это каждый раз: E9-WAREHOUSE « E9-WAREHOUSE »может быть разным каждый раз – Harrison

+0

Какие еще теги вокруг него? можете ли вы поделиться ссылкой или html? –

ответ

-1
li = soup.prettify().split('\n') 
print str(li[line_number-1]) 
+0

СПАСИБО! Работали красиво! – Harrison

3

Не используйте симпатичную печать, чтобы попытаться разобрать ТДС, выберите тег в частности, если атрибут является уникальным, то использовать, что, если имя класса является уникальным затем просто использовать, что:

td = soup.select_one("td.content") 
td = soup.select_one("td[colspan=3]") 

Если бы это был четвёртым тд:

td = soup.select_one("td:nth-of-type(4)") 

Если он находится в определенной таблице, выберите таблицу, а затем найдите td в таблице, пытаясь разделить html на строки и индексирование на самом деле хуже, чем с помощью regex to parse html.

Вы можете получить конкретный тд, используя текст из тэга предшествующую тд т.е. Департамент финансов строительной классификации::

In [19]: from bs4 import BeautifulSoup 

In [20]: import urllib.request 

In [21]: url = "http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?boro=1&houseno=1&street=park+ave&go2=+GO+&requestid=0" 

In [22]: r = urllib.request.urlopen(url).read() 

In [23]: soup = BeautifulSoup(r, "html.parser") 

In [24]: print(soup.find("b",text="Department of Finance Building Classification:").find_next("td").text) 
O6-OFFICE BUILDINGS 

Выберите п-й таблицы и строки:

In [25]: print(soup.select_one("table:nth-of-type(8) tr:nth-of-type(5) td[colspan=3]").text) 
O6-OFFICE BUILDINGS 
+0

, тогда я бы использовал использование print (td) после этого? потому что я назвал это, и он печатает «нет». вот мой текущий код: http://puu.sh/puY3G/bf07dffd63.png – Harrison

+0

Написал неправильный фрагмент, вы можете добавить фактическую ссылку или html, и это будет намного проще показать вам, как правильно разобрать html. –

+0

Вот ссылка: http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?boro=1&houseno=1&street=park+ave&go2=+GO+&requestid=0 – Harrison

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