在Python中从URL抓取特定信息
抓取HTML表的最简单方法是使用在Python中从URL抓取特定信息,python,dataframe,web-scraping,beautifulsoup,scrapy,Python,Dataframe,Web Scraping,Beautifulsoup,Scrapy,抓取HTML表的最简单方法是使用pandas.read\uHTML(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.
pandas.read\uHTML(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(',')
但这有时适用于某些URL,有时还包括其他类的详细信息以及
当前CPC类
和当前国际类
。我也尝试过使用查看页面源代码功能来美化soap
,但提到类我感到困惑。使用美化soup
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
解释
您要查找的表格是页面中的第五个表格find_all('table')
返回所有表的列表。因此,find_all('table')[4]
将给出第五个表
所需的文本位于第一行或第一个tr
标记中table.find('tr')
返回在表中找到的第一个tr
标记
最后,.text
提供标记内的文本。是否有任何直接方法可以获取包含所需信息的表号,因为某些url在其他一些表号中包含此信息。一个解决方案可以是,首先我必须在所有表中搜索“Current US Class”字符串,并获取包含此信息的表号,但我想知道有没有直接的方法@你可以用这个方法。试着自己做。如果你做不到,你可以在这里问一个新问题,如果没有人问过的话。你不会得到桌子号,但你会直接得到桌子。当然,兄弟非常感谢你的好意。