Uptodatecrawler/Main.py

46 lines
1.6 KiB
Python

import scrapy
from bs4 import BeautifulSoup
import requests
import html5lib
import re
import sys
import json
#Def the Uptodate URI for use
up_search_url = "https://www.uptodate.com/contents/search?search="
up_api_url = "https://www.uptodate.com/services/app/contents/search/2/json?&language=en&max=10&search="
up_prefix_url = "https://www.uptodate.com"
up_content_prefix_url = "https://www.uptodate.com/services/app/contents/topic/"
up_result_title_list = []
up_result_url_list = []
def do_uptodate_search_with_uptodate_api(key_word):
search_results = requests.get(up_api_url + key_word)
return(search_results.json())
def uptodate_full_content_get(processed_title):
full_content = requests.get(up_content_prefix_url + processed_title + "/print/json")
return(full_content.json())
def uptodate_title_process(title):
hyphen_title = title.replace(" ", "-")
return (hyphen_title.lower())
if __name__ == '__main__':
key_word = input("Please enter your keyword: ")
up_search_result = do_uptodate_search_with_uptodate_api(key_word)
for searchResults in up_search_result["data"]["searchResults"]:
if searchResults["type"] == "medical":
up_result_title_list.append(searchResults["title"])
#up_result_url_list.append(searchResults["url"])
for index, element in enumerate(up_result_title_list):
up_result_title_list[index] = uptodate_title_process(element)
print(up_result_title_list)
article_full_content = (uptodate_full_content_get(up_result_title_list[0]))
print(article_full_content["data"]["printHtml"])