Python - Запросы - BeatuifulSoup - HTML обнаружено при локальном запуске скрипта, но не найдено при запуске на VPS - PullRequest
0 голосов
/ 01 августа 2020

У меня возникает странная проблема, когда я пытаюсь запустить тестовый скрипт basi c, который должен выводить имя события из HTML URL-адреса с помощью Beautifulsoup. #

Код ниже:

import requests
import time
from bs4 import BeautifulSoup

def makesoup(url):
    cookies = {'mycountries' : '101,28,3,102,42,10,18,4,2,22', 'user_time_zone': 'Europe/London',  'user_time_zone_id': '1'} 
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
    r = requests.post(url,  headers=headers,  cookies=cookies)
    return BeautifulSoup(r.text,"html.parser")
   
def linkscrape(links, savefile):
    baseurl = "https://sport-tv-guide.live"
    urllist = []
    
    for link in links:
        finalurl = (baseurl+ link['href'])
        urllist.append(finalurl)
        print(finalurl)
        
    for singleurl in urllist:
        soup2=makesoup(url=singleurl)
        g_data=soup2.find_all('div', {'id': 'channelInfo'})
    
        
        for match in g_data:
            print(g_data)
            try:
                event =  match.find('div', class_='title full').text.strip()
                print(event)
            except:
                event = ""


            
def matches():
    
    dict = {"https://sport-tv-guide.live/live/boxing":"/var/scripts/output/boxing.txt"}
    
    for key,  value in dict.items():
        soup=makesoup(url=key)
        game_check = soup.find('div',  class_='alert alert-info')
        if game_check is not None:
            with open(value ,"w") as text_file:
                text_file.writelines("No games found for event")
        else:
            linkscrape(links=soup.find_all('a',  {'class': 'article flag',  'href': True}),  savefile = value)

matches()

Когда я запускаю код локально, я получаю следующий результат:

expected

When I run the exact same code on my VPS server, I receive the following output:

неожиданный

Сначала я думал, что веб-сайт блокирует запрос на основе пользовательского агента, поэтому я добавил заголовки в приведенный выше код, но проблема не исчезла. Единственное, что я могу придумать, это то, что сайт блокирует IP-адрес сервера VPS, хотя, как ни странно, он распечатывает правильный URL-адрес, но HTML URL-адреса не выводится / не обнаруживается Beautifulsoup, когда я Я использую VPS.

Заранее благодарим вас за любые предложения по возможному решению этой проблемы.

1 Ответ

0 голосов
/ 01 августа 2020

Возможно, вы попали в службу проверки подлинности домена или другой фильтр из-за использования коммерческого IP. Запросите страницу, которую вы пытаетесь очистить, сохраните ее в файл и проверьте, что вам отправляет веб-сервер. вы также можете использовать r.status_code как часть устранения неполадок.

...