Красивый суп из Интернета, висящий на веб-сайте - PullRequest
0 голосов
/ 27 мая 2020

Я использую python и красивый суп для l oop через кучу веб-сайтов, которые я сохранил в стеке, и беру с них видимый текст (что я делаю с помощью определенной функции). Каждый раз, когда мой l oop пытается go через этот веб-сайт: https://blogs.oracle.com/cloud-infrastructure/use-the-nuage-networks-virtualized-services-platform-with-oracle-cloud.

Он зависает на response = http.request('GET', scan_url) без каких-либо ошибок. На самом деле ничего не происходит, как бы долго я ни ждала. Я бы подумал о том, чтобы просто пропустить этот веб-сайт, однако, поскольку я использую это, чтобы узнать, я пытаюсь понять, смогу ли я исправить эту проблему, но не нашел решений. Это может быть просто из-за моего непонимания того, что определяет веб-сайты, которые вы можете очистить или не можете.

Вот фрагмент кода, который имеет отношение к этому:

for elems in stack:
    print("Looking at Site")
    print(elems)
    print("Here")
    http = urllib3.PoolManager()
    scan_url = elems
    print("Here2")
    try:
        response = http.request('GET', scan_url)
    except:
        confirmed_stack.append("Cannot Scrape: "+elems+"")
        continue
    print("Here3")
    soup = BeautifulSoup(response.data, 'html.parser')
    print("Yer")
    texts = soup.find_all(text=True)
    visible_texts = filter(tag_visible, texts)
    # print("HTML")
    pause_rand2 = random.randint(1, 2)
    time.sleep(pause_rand2)

I импортировали следующее в библиотеки в python, хотя не все актуальны или используются, так как я играл с ними:

from googlesearch import search
from bs4 import BeautifulSoup
from bs4.element import Comment
import random
import urllib3
import math
import re
from collections import Counter
import os
import time
from translate import Translator
import requests

1 Ответ

1 голос
/ 27 мая 2020

Попробуйте включить пользовательский агент в заголовки:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}  #<-- add this line


for elems in stack:
                print("Looking at Site")
                print(elems)
                print("Here")
                http = urllib3.PoolManager()
                scan_url = elems
                print("Here2")
                try:
                    response = requests.get(scan_url, headers=headers) #<-- adjusted this line
                except:
                    confirmed_stack.append("Cannot Scrape: "+elems+"")
                    continue
                print("Here3")
                soup = BeautifulSoup(response.text, 'html.parser') #<-- minor change here
                print("Yer")
                texts = soup.find_all(text=True)
                visible_texts = filter(tag_visible, texts) 
                #print("HTML")
                pause_rand2 = random.randint(1,2)
                time.sleep(pause_rand2)
...