Данные веб-скрепок с использованием python?

Я только начал изучать веб-скребок с помощью Python. Однако у меня уже возникли проблемы.

Моя цель – обрезать названия разных видов тунца на fishbase.org (http://www.fishbase.org/ComNames/CommonNameSearchList.php?CommonName=salmon)

Проблема: я не могу извлечь все имена видов.

Это то, что у меня есть до сих пор:

import urllib2 from bs4 import BeautifulSoup fish_url = 'http://www.fishbase.org/ComNames/CommonNameSearchList.php?CommonName=Tuna' page = urllib2.urlopen(fish_url) soup = BeautifulSoup(html_doc) spans = soup.find_all( 

Отсюда я не знаю, как я буду заниматься добычей названий видов. Я думал об использовании регулярных выражений (например, soup.find_all("a", text=re.compile("\d+\s+\d+")) для захвата текстов внутри тега …

Любой вход будет высоко оценен!

5 Solutions collect form web for “Данные веб-скрепок с использованием python?”

Вы могли бы также воспользоваться тем фактом, что все научные названия (и только научные названия) находятся в тегах <i/> :

 scientific_names = [it.text for it in soup.table.find_all('i')] 

Использование BS и RegEx – это два разных подхода к анализу веб-страницы. Первое существует, поэтому вам не нужно так много беспокоиться о последнем.

Вы должны прочитать о том, что фактически делает BS, похоже, вы недооцениваете его полезность.

То, что предлагает jozek, – это правильный подход, но я не мог заставить его отрывок работать (но, возможно, потому, что я не использую бета-версию BeautifulSoup 4). Что для меня работало:

 import urllib2 from BeautifulSoup import BeautifulSoup fish_url = 'http://www.fishbase.org/ComNames/CommonNameSearchList.php?CommonName=Tuna' page = urllib2.urlopen(fish_url) soup = BeautifulSoup(page) scientific_names = [it.text for it in soup.table.findAll('i')] print scientific_names 

Если посмотреть на веб-страницу, я точно не знаю, какую информацию вы хотите извлечь. Однако обратите внимание, что вы можете легко получить текст в теге, используя text атрибут:

 >>> from bs4 import BeautifulSoup >>> html = '<a>some text</a>' >>> soup = BeautifulSoup(html) >>> [tag.text for tag in soup.find_all('a')] [u'some text'] 

Спасибо всем … Мне удалось решить проблему, с которой я столкнулся с этим кодом:

 import urllib2 from bs4 import BeautifulSoup fish_url = 'http://www.fishbase.org/ComNames/CommonNameSearchList.php?CommonName=Salmon' page = urllib2.urlopen(fish_url) html_doc = page.read() soup = BeautifulSoup(html_doc) scientific_names = [it.text for it in soup.table.find_all('i')] for item in scientific_names: print item 

Если вы хотите долгосрочное решение, попробуйте пройти курс лечения . Это довольно просто и много работает для вас. Он очень настраиваемый и расширяемый. Вы будете извлекать все URL-адреса, которые вам нужны, используя xpath, что является более приятным и надежным. Тем не менее, вы можете использовать re, если вам нужно.

  • Как получить данные внутри тега </ br>, который находится внутри <li>, используя скребок python
  • Рекомендации по очистке экрана: Интерактивный график
  • Скремблирование данных из Facebook с помощью Python
  • selenium python webscrape терпит неудачу после первой итерации
  • Как сформулировать выражение Xpath для получения атрибута из дочернего узла?
  • Получите все ссылки с BeautifulSoup с одного веб-сайта (функция «Загрузить больше»)
  • Почему BeautifulSoup не находит конкретный класс таблицы?
  • Как прокручивать теги и перенаправлять на получение более тегов?
  •  
    Interesting Posts for Van-Lav

    Соглашение об именах Python – namedtuples

    Реализация словаря Gensim

    Как округлить десятичный знак Python до двух знаков после запятой?

    subprocess stdout / stderr в файл журнала конечного размера

    Получение элемента из кортежей кортежей в python

    Как передать выбранное имя файла из tkfiledialog GUI в другую функцию

    PicklingError: не может pickle <class 'decimal.Decimal'>: это не тот же объект, что и decimal.Decimal

    PyCharm: Как пропустить закрытие скобок / скобок / скобок?

    Синхронизация даты / времени с сокращенным названием часового пояса в Python?

    Лучший способ преобразовать пользовательский XML как синтаксис

    Ошибка «Недопустимые значения локатора, переданные в», если мы используем find_element вместо find_element_by

    Сортировка объекта gridx-графика Python

    скрипт python для конкатенации всех файлов в каталоге в один файл

    Строковые столбцы, нечувствительные к регистру в SQLAlchemy?

    Правильный способ «тайм-аута» запроса в «Торнадо»

    Python - лучший язык программирования в мире.