WedX - журнал о программировании и компьютерных науках

Python/BeautifulSoup: сбор данных с веб-страниц

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

Я пытаюсь очистить ISSUE DATE со страницы выше (вы можете увидеть ISSUE DATE, если откроете веб-страницу). Я столкнулся с некоторой проблемой с этим.

Это код, который я написал для этого.

import BeautifulSoup
import urllib2

url = "https://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=0000149.PN.&OS=PN/0000149&RS=PN/0000149"

data = urllib2.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(data)
value1 = soup.findAll('TABLE')

for value in value1:
    date1 = value.find('B').text
    print date1
09.04.2012

  • регистр тега не должен иметь значения, но в документации имена тегов строчными, а не прописными crummy.com/software/BeautifulSoup/bs3/**kwargs%29 09.04.2012
  • да, мне нужно вычистить дату выпуска с веб-страницы 09.04.2012
  • Я не могу напечатать дату выпуска. Я не знаю, где я ошибаюсь. Я новичок в программировании на Python, пожалуйста, помогите мне. 10.04.2012

Ответы:


1

Если перед циклом вы добавите ... print value1, вы увидите, что в html есть ошибка в строке 37 в символе 27, который представляет собой закрывающуюся двойную кавычку, в которой отсутствует открывающая двойная кавычка.

09.04.2012

2

Вероятно, это не оптимизировано, но вот один из способов вернуть дату выпуска:

import BeautifulSoup
import urllib2

url = "https://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=0000149.PN.&OS=PN/0000149&RS=PN/0000149"

data = urllib2.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(data)
issue_date = soup.findAll('b')[5].text
print issue_date
09.04.2012
  • вывод этого кода выходит как none. я не получаю дату, пожалуйста, помогите мне 09.04.2012

  • 3

    BeautifulSoup требует, чтобы имена тегов были в нижнем регистре. Заметьте также, что использование нескольких блоков try..except упростит отладку. Следующий код, кажется, достигает того, чего вы хотите:

    import BeautifulSoup
    import urllib2
    
    url = "https://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=0000149.PN.&OS=PN/0000149&RS=PN/0000149"
    
    data = urllib2.urlopen(url).read()
    soup = BeautifulSoup.BeautifulSoup(data)
    value1 = soup.findAll('table')
    n=0
    for value in value1:
        date1 = value.find('b')
        try: print n,date1.text
        except: print n
        n=n+1
    try: print "The winner is:",value1[3].find('b').text
    except: pass
    
    09.04.2012
  • я не могу напечатать дату. Она показывает «НЕТ». не могли бы вы мне помочь. 10.04.2012
  • Выход Кодекса выходит как никакой. Я не могу распечатать дату выпуска. Не могли бы вы мне помочь. 10.04.2012
  • Добавьте эту строку в конец: code print Победитель:,value1[3].find('tr').findAll('td')[-1].text 04.05.2012

  • 4

    Если структура одинакова на всех страницах, вы можете сделать это

    import BeautifulSoup
    import urllib2
    
    url = "https://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=0000149.PN.&OS=PN/0000149&RS=PN/0000149"
    
    data = urllib2.urlopen(url).read()
    soup = BeautifulSoup.BeautifulSoup(data)
    for td in soup.findAll('td'):
        if td.get('width','') !='' and td.get('width')=='80%':
            print td.text
    
    07.11.2013

    5

    Используйте текстовую функцию find, затем перейдите к следующему элементу с помощью функции next, например:

    import requests
    from bs4 import BeautifulSoup   
    url="https://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=/netahtml/PTO/srchnum.htm&r=1&f=G&l=50&s1=0000149.PN.&OS=PN/0000149&RS=PN/0000149"
    html=requests.get(url).content
    issue_date_zone = BeautifulSoup(html).find(text='Issue Date:')
    date_str=issue_date_zone.next.next.text
    print date_str
    

    результат:

    March 25, 1837
    
    27.09.2016
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]