Re: [問題] 爬蟲部署到Heroku後請求失敗

作者: atrisk (atrisk)   2022-08-22 10:59:52
※ 引述《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&[email protected]:8886",
"https": f"https://{YOUR_SCRAPINGBEE_API_KEY}:render_js=False&[email protected]: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)}')
作者: ToastBen (吐司邊)   2022-08-24 00:34:00
把timeout卡在哪個頁面丟出來看看?

Links booklink

Contact Us: admin [ a t ] ucptt.com