如何将抓取脚本转换为Web服务?

问题描述 投票:0回答:3

我想构建一个接受字符串并返回html代码的api。

这是我想要作为网络服务的抓取代码。

from selenium import webdriver
import bs4
import requests
import time

url = "https://www.pnrconverter.com/"
browser = webdriver.Firefox()
browser.get(url)
string = "3 PS 232 M 03FEB 7 JFKKBP HK2 1230A 420P 03FEB E 
PS/JPIX8U"
button = 
browser.find_element_by_xpath("//textarea[@class='dataInputChild']")
button.send_keys(string) #accept string
button.submit()
time.sleep(5)
soup = bs4.BeautifulSoup(browser.page_source,'html.parser')
html = soup.find('div',class_="main-content") #returns html
print(html) 

任何人都可以告诉我最好的解决方案,将我的代码包装成api / web服务。

python selenium web-scraping beautifulsoup
3个回答
1
投票

一般来说,没有最好的解决方案,因为解决方案必须适应问题和可用资源。

现在看起来你正试图包装别人的网站。如果这是你实际上试图解决的问题,并且你想要给予信任,你应该只是将人们转发到他们的网站。让您的网站在标题的302 Redirect字段中返回带有URL的Location

如果您要做的是从这一个样本检查获得响应,您已经硬编码,并且使结果可用,我建议您将它放在nginx后面的静态文件中。

如果您要做的是使用他们的后端将您拥有的行程转换为可以返回的响应,则可以通过使用其后端API(一旦可用)来实现。阅读文档,使用requests库命中您想要的API端点,然后获取JSON结果,并根据您的需要对其进行格式化。

如果你试图通过让自己成为中间人来复制他们的网站,那可能是非法的,你应该重新考虑你在做什么。

出于托管目的,您需要弄清楚API的频率。您可以很容易地从Heroku或类似的东西开始,并在需要时扩展。您可能希望WebObj或Flask或类似的东西坐在您打算托管此应用程序的网站上。您可以使用它们来处理我想要的简单请求到您想要使用它们的API的字符串。


0
投票

我是PNR Converter的所有者,因此我可以了解您是否试图从我们的网站上删除内容。不幸的是,不建议从PNR转换器中进行刮擦。我们正在开发一个看起来符合您需求的API,并且应该在不久的将来做好准备。如果您通过网站与我们联系,我们很乐意与您合作,如果您希望合法使用PNR Converter。 PNR Converter每年至少获得一次完整更新,因此我们会定期更改所有代码。我们还会监控对我们网站的所有请求,并且我们将阻止任何被视为不当使用的请求。我们的过滤器已经将您的IP地址(以250.144结尾)作为可能的误用。

就像我说的那样,如果您希望合法地与PNR Converter合作,而不是抓住我们的内容,那么我们很乐意这样做!请继续查看https://www.pnrconverter.com/api-introduction以获取有关我们API的信息。

我们将在本周末发布一个后端升级,它将具有不同的HTML结构,以及动态命名的元素,这将导致Web刮刀的严重问题!


-1
投票

在您打印(HTML)之前,您可能需要这样做,您可能希望以json格式保存代码。我用python php / hybrid做了类似的事情。基本上,我们将数据保存为JSON。那么任何在网络上打开该网站的尝试都会获得该数据/ api 200!

© www.soinside.com 2019 - 2024. All rights reserved.