Патентный скребок всегда блокирует IP даже со временем. - PullRequest
0 голосов
/ 12 июля 2020

Я написал этот код, который должен очищать результаты патентного поиска с веб-сайта ВПТЗ США при наличии списка условий для поиска. Я использую рандомизированный time.sleep, чтобы меня не забанили; однако мой IP-адрес все еще временно блокируется, что приводит к отсутствию результатов. Что еще можно сделать, чтобы меня не остановили?

import pypatent
from selenium import webdriver
import pandas as pd
import re
import time
import numpy as np


dataish = pd.read_csv("trialeer.csv")
symbols_to_keep = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM:;!-,?.@ \n\""
remove_unknown_chars = lambda x: ''.join(char for char in x if char in symbols_to_keep)
def clean_tweets(twoot):
    # Convert to lowercase and remove spaces from beginning
    twoot = str(twoot).lstrip()
    # Remove Twitter-related data
    #twoot = remove_user_tags(twoot)
    #twoot = remove_urls(twoot)
    #twoot = remove_hash_tags(twoot)
    # Remove unwanted characters
    twoot = remove_unknown_chars(twoot)
    # Remove spaces from end and condense multiple spaces into one
    twoot = twoot.rstrip()
    twoot = re.sub(' +', ' ', twoot)
    return twoot

dataish["NER Model"] = dataish["NER Model"].apply(clean_tweets)
list1 = dataish["NER Model"].to_list()
liste2= list(filter(lambda a: a != '', list1))
newlist = []

for element in liste2:
   newlist += element.split(',')
newlist = [x.strip() for x in newlist]


def uspatent(x):
    driver = webdriver.Chrome('./chromedriver')
    conn = pypatent.WebConnection(use_selenium=True, selenium_driver = driver)
    x = pypatent.Search(x, results_limit=5, get_patent_details=True, web_connection=conn).as_dataframe()
    return x

for item in newlist:
    try:
        print(uspatent(item))
        delays = [7, 4, 6, 2, 10, 19]
        delay = np.random.choice(delays)
        time.sleep(delay)
    except:
        pass

1 Ответ

1 голос
/ 12 июля 2020

Вы делаете слишком много запросов в день. Согласно http://patft.uspto.gov/

(перефразировано)

IP-адреса, которые генерируют более 10000 обращений к базе данных в день (примерно 1000 просмотров патентов), будут заблокированы.

Я уверен, что поисковые запросы генерируют больше обращений к базе данных, чем просмотр отдельных патентов, и очень быстро заканчиваются. Вы должны искать здесь для массовых данных. Учитывая, что вы можете изменить pypatent, чтобы использовать этот альтернативный источник данных, или вам понадобится другой метод для поиска нужных данных.

...