从 Python 中的 URL 抓取特定信息

Posted

技术标签:

【中文标题】从 Python 中的 URL 抓取特定信息【英文标题】:Crawling a specific information from a URL in Python 【发布时间】:2018-08-25 08:38:04 【问题描述】:

抓取 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)

从上面的 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,有时它还包括其他类详细信息以及 Current CPC ClassCurrent International Class。我也试过BeautifulSoap 使用View Page Source 功能,但我很困惑提到类。

【问题讨论】:

【参考方案1】:

使用 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] 会给出第五张桌子。

您想要的文本位于第一行或第一个tr 标记中。 table.find('tr') 返回在表中找到的第一个 tr 标记。

最后,.text 为您提供标签内的文本。

【讨论】:

是否有任何直接的方法来获取包含所需信息的表号,因为某些 url 包含在其他表号中的此信息。一种解决方案可以是首先我必须在所有表中搜索“当前美国类别”字符串并获取包含此信息的表号,但我想知道有什么直接的方法吗? @Keyur Potdar 您可以为此使用find_parent() 方法。尝试自己做。如果您无法做到这一点,如果没有人问过,您可以在 SO 上提出一个新问题。你不会得到桌号,但你会直接得到桌子。 好兄弟,非常感谢你的好意。

以上是关于从 Python 中的 URL 抓取特定信息的主要内容,如果未能解决你的问题,请参考以下文章

Python抓取网页中的图片到本地

使用 Beautifulsoup 和 Python 从 CSV 中抓取多个 URL

如何用python抓取这个网页的内容?

Python爬虫编程思想(161):Scrapy中的通用爬虫

Python爬虫编程思想(161):Scrapy中的通用爬虫

Python爬虫编程思想(161):Scrapy中的通用爬虫