2013-10-21 2 views
0

미국 특허 웹 사이트에서 내 검색어와 일치하는 모든 특허 번호 목록을 얻으려고합니다. 아래 예제 쿼리의 결과는 총 700 개의 항목을가집니다. 이 페이지에는 한 번에 50 개의 항목 만 표시되며이 번호를 늘릴 방법이 없습니다.웹 사이트에서 검색 결과를 로컬 파일로 추출하는 방법

한 가지 방법은 한 번에 50 개 항목을 모두 복사하여 MS에 붙여 넣은 다음 마지막 페이지까지 반복하는 것입니다. 이 방법은 시간이 많이 걸리고 좌절하는 것입니다. 프로그래밍 방식으로 전체 목록을 얻는 효율적인 방법 (선호하는 Python 또는 R) 또는 모두를 한 번에 가져올 수 있습니다.

http://appft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.html&r=0&p=1&f=S&l=50&Query=ACLM%2F%28%22TRANSCRIPTION+FACTORS%22%29&d=PG01

답변

1

당신은 파이썬이 일을 기계화BeautifulSoup4를 사용할 수 있습니다. 설치하기가 상대적으로 쉽습니다. Mechanize가 아닌 다른 라이브러리를 사용하여 인터넷을 탐색 할 수는 있지만 꽤 사용하기 쉽습니다. Shelve 모듈을 사용하여 정보 비트를 파이썬으로 읽을 수있는 (사전) 형식으로 저장할 수 있습니다.

코드의 전체 내용은 원하는 정보의 양에 따라 100+ 회선이됩니다.

  1. 는 HTML을 읽어 r=br.open(url)

  2. 을 사용하여 페이지를 열려면 브라우저를 사용 br=mechanize.Browser()

  3. 와 브라우저 객체를 생성 :

    일반적으로, 여기에 프로그램을 코딩 할 방법 페이지의 내용 : html=r.read()

  4. U se BeautifulSoup로 html을 읽을 수있는 형식으로 파싱합니다. soup=BeautifulSoup(html)

  5. soup.findAll()을 사용하면 원하는 페이지에 대한 링크가 포함 된 html 요소를 찾을 수 있습니다. html의 어떤 객체가이 정보를 포함하는지 패턴을 얻으려면 인터넷 브라우저를 사용하여 html 요소와 소스 코드를 검사하는 것이 좋습니다. 그렇게하면 당신이 원하는 것을 알 수 있습니다. 상황이 다르기는하지만 비슷한 페이지에서 다른 방식으로 색인이 생성되기 때문에 때로는 조금 까다 롭습니다. 당신이 더 많은 정보를 얻을해야 할 때마다

당신은 2-5 새로운 URL을 반복하는 단계를 유지할 수 있습니다. 이렇게하면 페이지 하단을 탐색 할 수 있습니다 (페이지 당 50 개의 항목으로 제한되지만 자동으로 탐색 할 수 있음).

url_dict=shelve.open(html_filename) 
#opens webpage 
r=br.open(first_url) 
for i in range(1,20): 
    #navigates upper browser to next page for non-first-pages 
    if (i !=1): 
     r=br.open(first_url+str(i)+'_p/') 
    #collects list of urls to be navigated by sr 
    html=r.read() 
    soup=BeautifulSoup(html) 
    frames=soup.find_all("a",{"class":br_class})#br_class is defined globally 
    time.sleep(1) 
    for item in frames: 
     url_suffix=item['href'] 
     full_url=url_prefix+url_suffix 
     full_url=full_url.encode('ascii','ignore') 
     if str(full_url) not in url_dict: 
      url_dict[str(full_url)]=get_information(full_url,sr) 
     time.sleep(1) 

get_information() 메소드는 다양한 URL을 살펴보고 정보의 사전을 반환 여기

내가 가진 웹 크롤러의 일부 샘플 코드입니다. 이 파일은 shelve 모듈을 사용하여 파일에 저장되므로 나중에 사람이 읽을 수있는 파일에 저장할 수 있습니다. 특허 번호 만보고 있기 때문에 이것이 반드시 필요한 것은 아닙니다.

모두 완료하면 Python으로 CSV 파일에 쓸 수 있습니다.

여기 내 크롤러 용으로 탭으로 구분 된 csv 작성자가 있습니다. 여전히 디버깅 할 필요가 있지만 일반적인 레이아웃은 정확합니다.

def parse_data(): 
    data=shelve.open(html_filename) 
    with open(out_file,'w') as out_handle: 
     line = '\t' 
     for item in header_list: 
      line=line+item+'\t' 
     out_handle.write(line) 
     for url in data: 
      line="" 
      for item in header_list: 
       line=line+data[item]+'\t' 
       out_handle.write(line) 
    print("Done writing data") 
    data.close() 

파일을 한 후, 올바른 디렉토리에 python [filename] 동안을 사용하여 Windows 명령 줄에서 실행할 수 있습니다.

관련 문제