我正试图写一个python
脚本,它将刮http://www.fakenewsai.com/并告诉我一篇新闻文章是否是假新闻。我希望脚本将给定的新闻文章输入到网站的url
输入字段,然后按submit
按钮。然后,我想刮网站,以确定是否文章是“假”或“真”的新闻,显示在网站上。你知道吗
我使用selenium
和ChromeDriver
成功地完成了这个任务,但是脚本非常慢(>;2分钟),并且没有在Heroku
(使用flask
)上运行。以下是我使用的代码供参考:
from selenium import webdriver
import time
def fakeNews(url):
if url.__contains__("https://"):
url = url[8:-1]
if url.__contains__("http://"):
url = url[7:-1]
browser = webdriver.Chrome("static/chromedriver.exe")
browser.get("http://www.fakenewsai.com")
element = browser.find_element_by_id("url")
element.send_keys(url)
button = browser.find_element_by_id("submit")
button.click()
time.sleep(1)
site = "" + browser.page_source
result = ""
if(site[site.index("opacity: 1")-10] == "e"):
result = "Fake News"
else:
result = "Real News"
browser.quit()
return result
print(fakeNews('https://www.nytimes.com/2019/11/02/opinion/sunday/instagram-social-media.html'))
我尝试使用其他python
库复制此代码,例如mechanicalsoup
、pyppeteer
和scrapy
。然而,作为python
的初学者,我并没有发现太多的成功。我希望有人能给我指出一个正确的方向。你知道吗
出于上述目的,在我看来,分析网站、了解其功能,然后自动执行浏览器行为而不是用户行为要简单得多。你知道吗
在网站上尝试在浏览器上点击F12,打开“网络”选项卡,在输入框上粘贴一个URL,然后点击“提交”,您将看到它向一个URL发送一个HTTP选项请求,然后发送一个POST请求。然后服务器返回一个JSON响应作为结果。你知道吗
因此,您可以使用Python的请求模块(docs)来自动化POST请求,而不是使用非常复杂的代码来模拟单击和刮取结果。你知道吗
一个非常简单的例子是:
附言:这将是公平的联系该网站的所有者,讨论使用他或她的基础设施为您的项目。你知道吗
主要的减速发生在启动chrome浏览器和定位第一个URL时。 请注意,您正在为每个请求启动一个浏览器。 您可以在初始化步骤中启动浏览器,并且只对每个请求执行自动化部分。 这将大大提高性能。你知道吗
相关问题 更多 >
编程相关推荐