Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从URL抓取特定信息_Python_Dataframe_Web Scraping_Beautifulsoup_Scrapy - Fatal编程技术网

在Python中从URL抓取特定信息

在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.

抓取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.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”字符串,并获取包含此信息的表号,但我想知道有没有直接的方法@你可以用这个方法。试着自己做。如果你做不到,你可以在这里问一个新问题,如果没有人问过的话。你不会得到桌子号,但你会直接得到桌子。当然,兄弟非常感谢你的好意。