我想组建一组关于搜索词“汽车”的专利ID。我写了这段代码:
./bin/ksql --config-file etc/ksql/ksql-server.properties -- http://127.0.0.1:9195
但是,我收到了503错误。我用Google搜索并发现它:'
由于a,服务器当前无法处理请求 暂时超载或维护服务器。'
这是否意味着
如果答案是(2),我该如何将其分解为较小的请求?
答案 0 :(得分:2)
这是否意味着(1)不要使用算法,而是手动组装ID或(2)将请求分解为更小的块。
都不是。
503基本上意味着服务器太忙或有时离线。
当您运行脚本时(或者如果您使用浏览器浏览网站),您将注意到服务器如何花时间处理单个请求,因此您可以猜测它是否难以处理单个请求,100个请求行对你的目标来说有点太多了。
但是,第一次16,17或18次呼叫效果很好。也许服务器只需要在每个查询之间花一点时间来处理它?</ p>
只需在文件顶部import time
添加time.sleep(10)
,然后在循环和利润结束时添加。{/ p>
你肯定想在这里和那里添加一些日志,这是我的代码版本(我刚刚添加了time.sleep()
+一些打印件)
import urllib2
from bs4 import BeautifulSoup
import sys
import StringIO
import re
import time
search_term = 'automobile'
patent_list = []
for i in range(100): #for the first 100 pages of results
web_page = 'https://www.lens.org/lens/search?q=' + str(search_term) + '&sat=P&l=en&st=true&p=' + str(i) + '&n=100'
print('fetching {} ({})'.format(i, web_page))
page = urllib2.urlopen(web_page)
print('webpage fetched')
soup = BeautifulSoup(page,'html.parser')
for aref in soup.findAll("a",href=True):
if re.findall('/lens/patent',aref['href']):
link = aref['href']
split_link = link.split('/')
if len(split_link) == 4:
patent_list.append(split_link[-1])
print('sleeping ten seconds')
time.sleep(10)
print '\n'.join(set(patent_list))
现在是protip :数据库中的项目不超过400个,所以你可以停止一个页面4.你最好检查一下你的循环是否有结果,如果没有中断循环。< / p>