我正试着上网http://angel.co/bloomfi

2024-10-03 11:16:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从网站上获取数据https://angel.co/bloomfire

import requests
from bs4 import BeautifulSoup

res = requests.get('https://angel.co/pen-io')
soup = BeautifulSoup(res.content, 'html.parser')
print(soup.prettify())

这将打印标题标记为“页面未找到-404-AngelList”。 在webbrowser中,该网站运行良好,但其源代码与我的python脚本的输出不同。 我也在phantomjs中使用了selenium,但它显示了相同的东西


Tags: fromhttpsimportget网站resrequestssoup
2条回答

在requests参数中添加页眉可以访问页面。以下是“人们也看到了”的结果。请尝试以下脚本:

import requests
from bs4 import BeautifulSoup

res = requests.get('https://angel.co/pen-io', headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text, 'html.parser')
for item in soup.select(".text"):
    try:
        title = item.select_one("a.startup-link").get_text()
    except:
        title = ''
    print(title)

结果:

^{pr2}$

看起来像天使公司将根据发送的User-Agent使用HTTP 404响应,看起来它将阻止默认的requests代理(可能取决于版本)。这可能会阻碍机器人活动。在

下面是我的ipython会话的一些输出。我正在使用requests/2.17.3。在

使用默认的Python请求用户代理

In [37]: rsp = requests.get('https://angel.co/bloom')
In [38]: rsp.status_code
Out[38]: 404

使用与Mozilla兼容的用户代理

^{pr2}$

rsp.content包含您希望看到的内容天使公司/布鲁姆. 在

使用一些随机用户代理

In [41]: rsp = requests.get('https://angel.co/bloom', headers={'User-Agent': 'birryree angel scraper'})

In [42]: rsp.status_code
Out[42]: 200

因此,您应该设置User-Agent,以绕过angle为各种默认代理使用的任何类型的过滤/阻塞。在

如果你要做大量的清理工作,我建议你做一个好公民,并设置一个代理字符串,让他们在你的刮蹭引起问题时联系你,比如:

requests.get('https://angel.co/bloom', 
             headers={'User-Agent': 'Mozilla/5.0 (compatible; http://yoursite.com)'}

相关问题 更多 >