Как отменить все детали контрольного матча в cricinfo - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь удалить все подробности тестового матча, но он показывает HTTP Error 504: Gateway Timeout Я получаю подробную информацию о тестовых матчах, но он не показывает, что это мой код, который я использовал bs4, чтобы удалить данные тестового матча изcricinfo

Мне нужно отменить детали 2000 тестовых матчей, это мой код

import urllib.request as req

BASE_URL = 'http://www.espncricinfo.com'

if not os.path.exists('./espncricinfo-fc'):
    os.mkdir('./espncricinfo-fc')

for i in range(0, 2000):

    soupy = BeautifulSoup(urllib2.urlopen('http://search.espncricinfo.com/ci/content/match/search.html?search=test;all=1;page=' + str(i)).read())

    time.sleep(1)
    for new_host in soupy.findAll('a', {'class' : 'srchPlyrNmTxt'}):
        try:
            new_host = new_host['href']
        except:
            continue
        odiurl =BASE_URL + urljoin(BASE_URL,new_host)
        new_host = unicodedata.normalize('NFKD', new_host).encode('ascii','ignore')
        print(new_host)
        html = req.urlopen(odiurl).read()
        if html:
            with open('espncricinfo-fc/{0!s}'.format(str.split(new_host, "/")[4]), "wb") as f:
                f.write(html)
                print(html)
        else:
            print("no html")

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

это обычно происходит, когда выполняется многократный запрос слишком быстро, это может быть сервер не работает или ваше соединение заблокировано брандмауэром сервера, попробуйте увеличить sleep() или добавить случайный спящий режим.

import random

.....
for i in range(0, 2000):
    soupy = BeautifulSoup(....)

    time.sleep(random.randint(2,6))
0 голосов
/ 28 ноября 2018

не знаю, почему, похоже, работает для меня.

Я сделал несколько изменений в цикле по ссылкам.Я не уверен, как вы хотите, чтобы вывод выглядел с точки зрения записи в ваш файл, поэтому я оставил эту часть в покое.Но, как я уже сказал, похоже, с моей стороны работает нормально.

import bs4
import requests  
import os
import time
import urllib.request as req

BASE_URL = 'http://www.espncricinfo.com'

if not os.path.exists('C:/espncricinfo-fc'):
    os.mkdir('C:/espncricinfo-fc')

for i in range(0, 2000):

    i=0
    url = 'http://search.espncricinfo.com/ci/content/match/search.html?search=test;all=1;page=%s' %i
    html = requests.get(url)

    print ('Checking page %s of 2000' %(i+1))

    soupy = bs4.BeautifulSoup(html.text, 'html.parser')

    time.sleep(1)
    for new_host in soupy.findAll('a', {'class' : 'srchPlyrNmTxt'}):
        try:
            new_host = new_host['href']
        except:
            continue
        odiurl = BASE_URL + new_host
        new_host = odiurl
        print(new_host)
        html = req.urlopen(odiurl).read()

        if html:
            with open('C:/espncricinfo-fc/{0!s}'.format('_'.join(str.split(new_host, "/")[4:])), "wb") as f:
                f.write(html)
                #print(html)
        else:
            print("no html")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...