我正在尝试为Indian patent search website编写一个webscraper来获取有关专利的数据。这是我到目前为止的代码。
#import the necessary modules
import urllib2
#import the beautifulsoup functions to parse the data
from bs4 import BeautifulSoup
#mention the website that you are trying to scrape
patentsite="http://ipindiaservices.gov.in/publicsearch/"
#Query the website and return the html to the variable 'page'
page = urllib2.urlopen(patentsite)
#Parse the html in the 'page' variable, and store it in Beautiful Soup format
soup = BeautifulSoup(page)
print soup
不幸的是,印度专利网站并不健全,或者我不确定如何在这方面继续前进。
这是上述代码的输出。
<!--
###################################################################
## ##
## ##
## SIDDHAST.COM ##
## ##
## ##
###################################################################
--><!DOCTYPE HTML>
<html>
<head>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta charset="utf-8"/>
<title>:: InPASS - Indian Patent Advanced Search System ::</title>
<link href="resources/ipats-all.css" rel="stylesheet"/>
<script src="app.js" type="text/javascript"></script>
<link href="resources/app.css" rel="stylesheet"/>
</head>
<body></body>
</html>
我想提供的是,假设我提供公司名称,刮刀应该获得该特定公司的所有专利。我想做其他事情,如果我可以使这一部分正确,例如提供一组输入,刮刀将用于寻找专利。但我被困在我无法继续前进的部分。
非常感谢任何有关如何获取此数据的指示。
答案 0 :(得分:4)
您只需使用请求即可完成此操作。该帖子是 http://ipindiaservices.gov.in/publicsearch/resources/webservices/search.php ,其中包含一个 param rc _ ,这是我们使用 time.time创建的时间戳
"field[]"
中的每个值都应与"fieldvalue[]"
中的每个值匹配,然后与"operator[]"
匹配,无论您选择*AND*
*OR*
还是{{1}每个键之后的*NOT*
指定我们传递一个 value(s)的数组,而没有任何东西可以工作。:
[]
输出将如下所示,我无法全部添加,因为有太多数据要发布:
data = {
"publication_type_published": "on",
"publication_type_granted": "on",
"fieldDate": "APD",
"datefieldfrom": "19120101",
"datefieldto": "20160906",
"operatordate": " AND ",
"field[]": ["PA"], # claims,.description, patent-number codes go here
"fieldvalue[]": ["chris*"], # matching values for ^^ go here
"operator[]": [" AND "], # matching sql logic for ^^ goes here
"page": "1", # gives you next page results
"start": "0", # not sure what effect this actually has.
"limit": "25"} # not sure how this relates as len(r.json()[u'record']) stays 25 regardless
import requests
from time import time
post = "http://ipindiaservices.gov.in/publicsearch/resources/webservices/search.php?_dc={}".format(
str(time()).replace(".", ""))
with requests.Session() as s:
s.get("http://ipindiaservices.gov.in/publicsearch/")
s.headers.update({"X-Requested-With": "XMLHttpRequest"})
r = s.post(post, data=data)
print(r.json())
如果您使用记录键,您将获得一个词典列表,如:
{u'success': True, u'record': [{u'Publication_Status': u'Published', u'appDate': u'2016/06/16', u'pubDate': u'2016/08/31', u'title': u'ACTUATOR FOR DEPLOYABLE IMPLANT', u'sourceID': u'inpat', u'abstract': u'\n Systems and methods are provided for usin.............
这是您的专利信息。
您可以看到我们是否在浏览器中选择了一些值,所有 fieldvalue ,字段和运算符中的值排成一行,{ {1}}是默认设置,因此您可以看到每个选项:
所以弄清楚代码,选择你想要的东西并发布。