Here's where I hit the limit with that setup: dynamic websites. If you're looking at something like discourse-powered communities or similar, and don't feel a bit too lazy to dig into all the ways requests are expected to look, it's no fun anymore. Luckily, there's lots of js-goodness which can handle dynamic website, inject your javascript for convenience and more [4].
The recently published Headless Chrome [5] and puppeteer [6] (a Node API for it), are really promising for many kinds of tasks - scraping among them. You can get a first impression in this article [7]. The ecosystem does not seem to be as mature yet, but I think this will be foundation of the next go-to scraping tech stack.
If you want to try it yourself, I've written a brief intro [8] and published a simple dockerized development environment [9], so you can give it a go without cluttering your machine or find out what dependencies you need and how the libraries are called.
[2] https://www.crummy.com/software/BeautifulSoup/bs4/doc/
[3] http://sangaline.com/post/advanced-web-scraping-tutorial/
[4] https://franciskim.co/dont-need-no-stinking-api-web-scraping...
[5] https://developers.google.com/web/updates/2017/04/headless-c...
[6] https://github.com/GoogleChrome/puppeteer
[7] https://blog.phantombuster.com/web-scraping-in-2017-headless...