Re: [問題] 爬蟲部署到Heroku後請求失敗
※ 引述《gene50814 (genechen)》之銘言:
: 各位大大好
: 小弟有一個爬印度證交所(https://www.nseindia.com/) 網站的需求。
: 在local端寫好執行都沒問題,但部署到heroku之後連單純的requests get都沒辦法。
: 請求送出之後不是會return失敗的status code,而是會執行非常久都不會結束
: 之前在local端測試的時候是如果沒有加user-agent會發生這種問題,但部署到heroku上
: 的程式是有加的
: 想請教如果要能在heroku上正常運行可以怎麼調整? 不知道會不會是跟國家有關? hero
: ku上的國家似乎只有US跟EU。會是需要調整user-agent嗎?
: 請大大們指點迷津了 感謝
如gene50814所言,requests在local host只要加User-Agent就可以正常執行,
然而一旦佈署到Heroku上就會失效,等很久都得不到回應。
我在https://www.scrapingbee.com/註冊一個免費的帳號,將proxies設成該站所
提供的位址後可以成功執行,不過免費的帳號只能存取1000次,發現存取nseindia
首頁就消耗掉10次的quota,感覺不太實用。
我也很好奇大家都如何解這類問題?
以下是架在click-web framework上面的測試程式。
import click
import requests, bs4
@click.group()
def cli():
'A stupid script to test click-web'
pass
@cli.command()
def nse_india():
URL_HOME = 'https://www.nseindia.com/'
YOUR_SCRAPINGBEE_API_KEY = 'copy from https://app.scrapingbee.com/dashboard'
proxies = {
"http": f"http://{YOUR_SCRAPINGBEE_API_KEY}:render_js=False&premium_proxy=True@proxy.scrapingbee.com:8886",
"https": f"https://{YOUR_SCRAPINGBEE_API_KEY}:render_js=False&premium_proxy=True@proxy.scrapingbee.com:8887"
}
link_res = requests.get(URL_HOME, proxies=proxies, verify=False)
click.echo(f'{link_res.text[:200]}')
link_soup = bs4.BeautifulSoup(link_res.content, 'html.parser')
links = link_soup.select('li')
click.echo(f'links: {len(links)}')
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.165.201.152 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1661137197.A.759.html
→
08/24 00:34,
2年前
, 1F
08/24 00:34, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章