抓取HTML表格的最简单方法是使用pandas.read_html(url)
。对于以下URL,我获得了所有表
import pandas as pd
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=3944788.PN.&OS=PN/3944788&RS=PN/3944788"
df=pd.read_html(url)
从上面的网址我只想了解这些具体信息。
Current U.S. Class: 235/54F
考虑上面的df
作为列表,我已经编写了以下代码来获取此特定信息
myitem="Current U.S. Class:"
for i in range(len(df)):
if myitem in str(df[i]):
ClassTitle=''.join(df[i][0])
ClassNumber=''.join(df[i][1])
if ';' in ClassTitle:
ClassTitle=ClassTitle.rsplit(':')
print(ClassTitle[0])
if ';' in ClassNumber:
ClassNumber=ClassNumber.rsplit(';')
if ',' in ClassTitle:
ClassTitle=ClassTitle.rsplit(',')
print(ClassTitle[0])
if ',' in ClassNumber:
ClassNumber=ClassNumber.rsplit(',')
但这有时适用于某些网址,有时它还包含其他类详情以及Current CPC Class
和Current International Class
。我还尝试BeautifulSoap
使用View Page Source
功能,但我很难提及课程。
答案 0 :(得分:2)
使用BeautifulSoup
import requests
from bs4 import BeautifulSoup
r = requests.get('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=3944788.PN.&OS=PN/3944788&RS=PN/3944788')
soup = BeautifulSoup(r.text, 'lxml')
table = soup.find_all('table')[4]
result = table.find('tr').text
print(result)
# Current U.S. Class: 235/54F
<强>解释强>
您所使用的表格是页面中的第5个表格。 find_all('table')
返回所有表的列表。因此,find_all('table')[4]
将提供第5个表格。
您想要的文字位于第一行或第一个tr
标记中。 table.find('tr')
会返回表格中找到的第一个tr
标记。
最后,.text
会为您提供标记内的文字。