0

私は Python プログラミングの初心者で、Web ページをスクレイピングする方法を学ぼうとしています。私がやろうとしているのは、このWeb ページからデータをスクレイピングすることです

上記のページからをスクレイピングしようとしています(ウェブページを開けばISSUE DATEわかります)。ISSUE DATE私はこれでいくつかの問題に直面しています。

これは私がこのために書いたコードです。

import BeautifulSoup
import urllib2

url = "http://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
4

5 に答える 5

0

これはおそらく最適化されていませんが、発行日を取り戻す1つの方法は次のとおりです。

import BeautifulSoup
import urllib2

url = "http://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
于 2012-04-09T18:41:53.620 に答える
0

ループの前に ... を追加するprint value1 と、html の 37 行目の 27 文字目にエラーがあることがわかります。これは、開始二重引用符がない終了二重引用符です。

于 2012-04-09T18:41:00.263 に答える
0

ページ全体で構造が同じである場合、これを行うことができます

import BeautifulSoup
import urllib2

url = "http://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
于 2013-11-07T21:19:03.293 に答える
0

BeautifulSoup では、タグ名を小文字にする必要があります。また、いくつかの try.. except ブロックを使用すると、デバッグが少し簡単になることにも注意してください。次のコードは、あなたが望むものを達成しているようです:

import BeautifulSoup
import urllib2

url = "http://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
于 2012-04-09T18:48:08.217 に答える