Несоответствие с кодом состояния при очистке сайта (200 или 403) - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь почистить seekingalpha.com новостной раздел как личный проект. Однако, похоже, я не могу успешно эмулировать браузер, так как когда я попадаю на страницу 8 или около того, я получаю 403 forbidden output code. Если я открываю свой браузер в приватном режиме, я могу просматривать все страницы вручную, поэтому мой IP не блокируется.

Я использую Requests и Beautifulsoup в Python3.8

У меня есть:

  • Добавлен пользовательский агент git, а также проверенные случайные агенты пользователя

  • Использование Сеанс запроса, который должен автоматически обновлять куки, я полагаю (?)

  • Добавлен заголовок реферера

  • Увеличена задержка между запросами

Вот мой код:

import requests
import time
import random
import webbrowser
from bs4 import BeautifulSoup
import re
import sys
import os



class SeekingAlpha():

    from fake_useragent import UserAgent
    ua = UserAgent()

    BASE_URL = 'https://seekingalpha.com/'
    NEWS_URL = BASE_URL + 'articles?page={}'


    def __init__(self):
             self.session = requests.Session()
             self.session.headers['User-Agent'] = 'Mozilla/5.0 (X11;  Ubuntu; Linux i686; rv:52.0) Gecko/20100101 Firefox/52.0'

             response =self.session.get(self.BASE_URL)
             response.raise_for_status() 
             self.session.headers['Referrer'] = 'https://seekingalpha.com/'
             print(self.session.headers)
             self.master_urls = []

             for i in range(1,100):        
                page = self.session.get(self.NEWS_URL.format(i))
                time.sleep(random.randint(3,5))
                page.raise_for_status()
                soup = BeautifulSoup(page.content, 'html.parser')
                links = soup.find_all('a', href = True)
                links = [link for link in links if link.has_attr("sasource") and link['sasource'] == 'all_articles']
                self.master_urls.extend(links) 


if __name__ == "__main__":

    master_urls = SeekingAlpha()

РЕДАКТИРОВАТЬ:

Вот что я вижу со страницей 8 через браузер (удалены заголовки, чтобы не занимать слишком много места в посте) :

"ПОСЛЕДНИЕ СТАТЬИ

ВЫДЕЛЕНИЕ:

    All
    Top Ideas
    Editors' Picks
    Small-Cap Insight
    Outstanding Contribution
    Most Popular

СТАТЬИ | НОВОСТИ | ТРАНСКРИПТЫ

Should I Open A Roth IRA Right Now? That Depends
Charles Lewis Sizemore, CFA • Thu, Apr. 30, 11:15 AM
China Continues To Lead World's Major Equity Regions In 2020
James Picerno • MCHI, SPY, VT• Thu, Apr. 30, 11:09 AM
Gold And Gas: 2 Anti-Recession Trades
Atlas Research • QQQ, UNG, SAND• Thu, Apr. 30, 11:05 AM
Excellent Total Return Bond Funds For Momentum-Based Fixed Income Portfolios
MyPlanIQ • TGMNX, BOND, DLTNX• Thu, Apr. 30, 11:04 AM
NXP's Share Price Already Assumes A Lot Of Growth And Improvement
Stephen Simpson, CFA • MCHP, RNECY, TXN• Thu, Apr. 30, 11:01 AM
[This article is one of the editors' picks] Chart Industries Worth Another Look With LNG Mostly Washed Out
Stephen Simpson, CFA • GTLS• Thu, Apr. 30, 10:53 AM
Dana Incorporated 2020 Q1 - Results - Earnings Call Presentation
SA Transcripts • DAN• Thu, Apr. 30, 10:43 AM
Don't Panic! Coronavirus, GDP, And Unemployment
CFA Institute Contributors • SPY, QQQ, DIA• Thu, Apr. 30, 10:42 AM
Predicting Depressions For Dummies, Part II
John Overstreet • SPY, QQQ, DIA• Thu, Apr. 30, 10:37 AM
Cognex Already Trading On Recovery Prospects
Stephen Simpson, CFA • FANUY, CGNX• Thu, Apr. 30, 10:29 AM
Meritor, Inc. 2020 Q2 - Results - Earnings Call Presentation
SA Transcripts • MTOR• Thu, Apr. 30, 10:28 AM

"

1 Ответ

0 голосов
/ 03 мая 2020

Вы пробовали увеличить случайный сон? Я предполагаю, что 3-5 слишком мало, и веб-сайт может закрыть вас после вашего 8-го запроса. Либо увеличьте его, либо, если вы усыпите 403 go, и через некоторое время повторите попытку.

Если вам действительно нужны эти данные как можно скорее, настройте прокси-сервер Tor и используйте его некоторое время. (дает вам другой внешний IP-адрес - на всякий случай прекратите сеанс)

Иногда, если ваш бот становится слишком раздражающим, владелец сайта выгоняет вас (по крайней мере, это мой опыт: - /).

...