我是Python编程的初学者,我正在努力学习如何抓取网页。我要做的是从这个web page
中抓取数据我正在尝试从上一页抓取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
答案 0 :(得分:0)
如果在循环之前添加了... print value1
你可以看到html在第37行的第27个字符中有一个错误,这是一个关闭的双引号,它缺少了它的开头双引号。
答案 1 :(得分: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)
issue_date = soup.findAll('b')[5].text
print issue_date
答案 2 :(得分:0)
BeautifulSoup需要标记名称为小写。另请注意,使用少数几个 尝试..除了块会使调试这更容易一些。似乎是以下代码 实现你想要的目标:
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
答案 3 :(得分: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
答案 4 :(得分:0)
使用查找文本函数,然后使用 next 函数迭代到下一个元素,如下所示:
import requests
from bs4 import BeautifulSoup
url="http://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