У меня есть код, который извлекает новости из этого newspaper с использованием запроса и временного интервала (может быть до года).ускорить запрос HTTP-запроса python и 500
Результаты разбиты на страницы до 10 статей на странице, и поскольку я не мог найти способ увеличить его, я выдаю запрос для каждой страницы, затем получаю заголовок, URL-адрес и дату каждой статьи. Каждый цикл (HTTP-запрос и синтаксический анализ) занимает от 30 секунд до минуты, и это очень медленно. И в конечном итоге он остановится с кодом ответа 500. Мне интересно, есть ли способы ускорить его или, возможно, сделать несколько запросов одновременно. Я просто хочу получить детали статей на всех страницах. Вот код:
import requests
import re
from bs4 import BeautifulSoup
import csv
URL = 'http://www.gulf-times.com/AdvanceSearchNews.aspx?Pageindex={index}&keywordtitle={query}&keywordbrief={query}&keywordbody={query}&category=&timeframe=&datefrom={datefrom}&dateTo={dateto}&isTimeFrame=0'
def run(**params):
countryFile = open("EgyptDaybyDay.csv","a")
i=1
results = True
while results:
params["index"]=str(i)
response = requests.get(URL.format(**params))
print response.status_code
htmlFile = BeautifulSoup(response.content)
articles = htmlFile.findAll("div", { "class" : "newslist" })
for article in articles:
url = (article.a['href']).encode('utf-8','ignore')
title = (article.img['alt']).encode('utf-8','ignore')
dateline = article.find("div",{"class": "floatright"})
m = re.search("([0-9]{2}\-[0-9]{2}\-[0-9]{4})", dateline.string)
date = m.group(1)
w = csv.writer(countryFile,delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
w.writerow((date, title, url))
if not articles:
results = False
i+=1
countryFile.close()
run(query="Egypt", datefrom="12-01-2010", dateto="12-01-2011")
вы также можете сделать это с помощью витой питона и список отложенных событий –
теперь я понимаю, что итерация может остановиться до фактического последней статьи найден. Но ты получил идею – baloo