Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 刮取站点时与状态代码不一致(200或403)_Python_Beautifulsoup_Python Requests - Fatal编程技术网

Python 刮取站点时与状态代码不一致(200或403)

Python 刮取站点时与状态代码不一致(200或403),python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,我正试图把seekingalpha.comnews部分作为一个个人项目。 然而,我似乎无法成功地模拟浏览器,因为一旦我进入第8页左右,我就会得到403禁止输出代码。如果我在私人模式下打开浏览器,我可以手动浏览所有页面,因此我的IP不会被阻止 我在Python3.8 我有: 添加了合法用户代理以及尝试过的随机用户代理 使用应该自动更新cookies的请求会话,我相信(?) 添加了一个推荐人标题 请求之间的时间延迟增加 这是我的密码: import requests import time im

我正试图把
seekingalpha.com
news部分作为一个个人项目。 然而,我似乎无法成功地模拟浏览器,因为一旦我进入第8页左右,我就会得到
403禁止输出代码
。如果我在私人模式下打开浏览器,我可以手动浏览所有页面,因此我的IP不会被阻止

我在
Python3.8

我有:

  • 添加了合法用户代理以及尝试过的随机用户代理

  • 使用应该自动更新cookies的请求会话,我相信(?)

  • 添加了一个推荐人标题

  • 请求之间的时间延迟增加
这是我的密码:

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

你试过增加随机睡眠吗?我认为3-5太低了,一个网站可能会在你第8次请求后关闭你。或者增加它,或者如果你得到一个403去睡觉,然后再试一次

如果您确实需要尽快获得该数据,请配置Tor代理,并使用一段时间。(为您提供不同的外部IP-删除会话以防万一)


有时,如果你的机器人太烦人,网站所有者会把你赶出去(至少,这是我的经验:-/)。

他们可能会阻止多个请求。尝试访问第8页url,然后打印内容(如果你还没有)。看看你看到了什么,这就是为什么它会断裂。至于如何绕过这一点,我不知道。@OldWinterton我已经访问了第8页,我看到了文章的链接。我将更新作品第8页。“如果你不是机器人,请点击这个按钮”是在我看到的html中。我还没有尝试增加睡眠时间,但其他人告诉我,他们以前可以处理100个请求,这与标题有关(尽管他们已经有一段时间不记得细节了)。基本上,网站似乎在使用附加标题来验证您是否是浏览器。我认为(不完全确定),他们正在使用重定向为浏览器提供附加信息,以包含在标题中。我是一个网络开发的初学者,所以我不是百分之百确定。