※ 引述《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)}')