<script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=648d93f16fc24400124f2a24&product=inline-share-buttons' async='async'></script>

How to Create a Custom Web Scraper in 15 Easy Steps?

Planning to build a customized web scraper for the first time? Follow these 15 easy steps to master the art of web scraping.

In today's digital age, it is clear to us that information is the currency that influences our innovation, decision-making, and progress. As you may have observed, the internet has become our ultimate source of data, and it holds an endless amount of information just waiting to be explored. 

But what if you need specific data from websites that cannot be downloaded? That's where a custom web scraper comes to the rescue.

How to Create a Web Scraper

Instead of having to do repeated tasks like manually copying and pasting information, a custom web scraper could do the heavy lifting for you. In fact, a well-designed web scraper can make the data collection process automatic, which gives you more time to analyze insights and make better decisions.

How to Build a Custom Web Scraper in 15 Easy Steps?

Building your own custom web scraper might sound difficult, but don’t worry. Here are 15 easy steps that’ll help you create a functional web scraper and make your tasks a lot easier. 

Step 1: Choose a Programming Language

The foundation of your web scraper lies in the programming language you choose. Python stands out as a popular choice due to its simplicity and various libraries that simplify web scraping.

We suggest JavaScript or Java web scraping as another possible option as well, especially if you're dealing with websites that heavily rely on client-side scripting.

You also have Puppeteer and Node.js, which are JavaScript libraries that enable you to control headless browsers for scraping dynamic content.

If you are a Ruby enthusiast, you can opt for Nokogiri for web scraping tasks.

As you gain experience, you can tackle more intricate websites with the help of more sophisticated programming tools.

Step 2: Understand the Ethics and Legality

To be proficient in web scraping, you need to understand the ethical and legal aspects of the practice. While web scraping itself is not illegal, misusing the data you obtained or overloading a website's servers with requests can get you into legal trouble.

So always check the terms of use of the website you're scraping because some websites explicitly prohibit it. You can never be too careful!

Additionally, focus on the website's robots.txt file, which indicates which parts of the site are off-limits for scraping.

Lastly, avoid sending too many requests in a short period because it can overload the server and crash the website in some cases. That not only affects the server, but it will also put your web scraping to a halt.

Step 3: Pick a Target Website

To improve your skills as a beginner, start with a straightforward website for your initial scraping project. Choose websites that don't require login credentials or intricate JavaScript handling. The simpler, the better.

As you gain confidence and skills, you can gradually move on to more complex sites.

When you begin with a simpler site, you'll be able to avoid unnecessary complications and build a solid foundation for more intricate projects down the line. As they say, trust the process!

Step 4: Plan Your Approach

Just like in everything we do, we can never stress to you the importance of making a plan. So, before you jump into coding, take some time to outline your scraping approach. This helps you put things into perspective.

Define the specific data you want to extract from the website. Decide what elements you need for your project, and make sure the data is spread across multiple pages.

Plus, you have to create a list of URLs or pages that you'll be targeting. 

Having a clear plan will save you from writing unnecessary code and help you organize your scraping logic efficiently.

Step 5: Set Up Your Development Environment

You also have to make sure that you have the necessary tools set up in your development environment. This varies depending on what kind of developer you are.

For Python developers, this means having Python itself installed along with a code editor like Visual Studio Code or Jupyter Notebook.

You'll also want to install relevant libraries using a package manager like pip (for Python) or npm (for JavaScript).

JavaScript developers must also have Node.js installed, and they can choose from code editors like Visual Studio Code or Sublime Text.

Step 6: Send HTTP Requests

Web scraping is essentially about simulating the actions of a web browser programmatically. To retrieve the HTML content of the pages you're interested in, you'll need to send HTTP requests to the website's server.

This sounds too technical a task, right? But do not worry! Python's requests library or JavaScript's Fetch API can help you accomplish this without much effort.

With a few lines of code, you can fetch the HTML content and prepare it for computing. Isn’t that amazing?

Step 7: Parse HTML Content

But you’re not done yet. After fetching the HTML content, it's time to extract the data you're interested in. This is where parsing comes into play.

Parsing involves breaking down the HTML structure and identifying the specific elements you want to scrape.

Beautiful Soup (Python) and Cheerio (JavaScript) are popular libraries for parsing HTML. These libraries allow you to navigate the HTML structure and extract specific elements, such as headings, paragraphs, tables, and more.

Step 8: Handle Dynamic Content

Some websites generate content dynamically using JavaScript. If the data you need is loaded or modified after the initial page load, you must handle this dynamic content. But how can you do it?

Libraries like Puppeteer (JavaScript) provide you with a headless browser environment that gives you the power to fully render the page. You can also execute JavaScript and access dynamically generated content with Puppeteer.

This step is essential for scraping content from modern, interactive websites that are in style now. Therefore, knowing how to handle their content is a handy skill.

Step 9: Data Storage

Once you've successfully extracted the desired data, you'll want to store it in a structured format for further use.

Depending on your needs, you can save the data in CSV files or JSON format. You can even store it in a database for more complex applications.

Choose a storage format that suits your needs and allows you to easily work with data.

While selecting the right format, focus on factors such as the type of data you're collecting, the volume of data, and how you intend to analyze or use it later. This will make your work much easier.

Step 10: Implement Error Handling

Web scraping doesn't always go smoothly. Servers can be slow to respond or even reject requests, network connections can fail, and websites can change their structure unexpectedly. So, we completely understand if you get frustrated with the process. That’s why it's necessary to implement robust error handling in your code.

This involves techniques like retrying failed requests, identifying and handling common errors, and gracefully exiting the program if a critical error occurs.

If you can handle errors properly, you can prevent your scraper from crashing and provide valuable insights into any issues that arise.

Step 11: Respect Robots.txt and Use Delays

Websites often have a robots.txt file that outlines the scraping guidelines for search engines and bots. This file indicates which parts of the site are open to scraping and which should be avoided. Think of it as the dos and don’ts of each site.

You have to respect these rules to maintain good scraping etiquette. To avoid overloading servers and potentially getting blocked, try to space out your requests. This way, you give the website's server some breathing room, reducing the risk of overloading it with requests and potentially getting blocked.

Step 12: Test Thoroughly

Have you ever heard of the phrase, “biting off more than you could chew”? That applies here as well. So, before unleashing your scraper on a large scale, it's a good practice to thoroughly test it on a smaller scale.

Double-check and ensure that it's collecting the correct data, handling errors appropriately, and adhering to ethical scraping practices.

This testing phase helps you identify any issues or unexpected behavior before they become significant problems. It's also an opportunity to fine-tune your scraper's performance.

Step 13: Scale Up

Once you're confident that your scraper works as intended, you can consider scaling up your scraping efforts.

Automation comes into play here. You can modify your code to navigate through multiple pages or websites, allowing you to collect a larger volume of data.

However, while scaling up, you must try to balance the frequency of requests and the server's capacity. As we have mentioned before, overloading a server with requests can lead to your IP address being blocked or even result in legal consequences. So, trust us when we say moderation is key.

Step 14: Maintain and Update

Websites are dynamic entities that change over time. Elements like HTML structure, class names, and IDs can change, and this could break your scraper and affect its functionality.

To prevent this from happening, regularly maintain and update your scraper. Monitor for any error messages, adapt to website changes, and keep your codebase organized and well-documented.

Step 15: Be Ethical

Throughout the process of your web scraping journey, you should always keep in mind ethical considerations. We mentioned this in the previous steps, but it bears repeating.

Always follow the terms of use and scraping guidelines set by the website you're interacting with. Use the data you collect responsibly, avoiding any actions that could infringe on users' privacy or violate copyright laws. Otherwise, it can get pretty nasty.

Ethical scraping contributes to a positive online environment and ensures that web scraping remains a valuable tool for data extraction without causing harm or disruption.

Remember, web scraping should be a tool for good, not a means to infringe on others' rights or disrupt their operations.

Conclusion:

If you’re new to building your own custom web scraper, the whole process might seem complicated and overwhelming at first.

But know that it’s completely normal, and with a bit of practice, you’ll get the hang of it soon.

Besides, this comprehensive guide will help you get a broader perspective on building a custom web scraper. Just follow these steps, and you’ll be mastering the art of web scraping in no time.

/fa-solid fa-video/ Latest Tech Videos!$hide=mobile

Name

25PP,2,3G,3,4G,5,Absinthe,5,Adobe Flash,3,Ads,30,Affiliate Marketing,10,AliExpress,1,Amazon,55,Amazon Phone,1,Amazon Tablet,7,AMD,5,Android,255,Android 10,2,Android 11,2,Android 12,2,Android 6,3,Android 7,4,Android 8,9,Android 9,4,Android APK,34,Android Apps,127,Android Auto,3,Android Games,20,Android GApps,3,Android Gingerbread,2,Android Ice Cream Sandwich,8,Android Jelly Bean,21,Android KitKat,12,Android Lollipop,10,Android Marshmallow,3,Android N,5,Android Nougat‬,5,Android O,7,Android Oreo,8,Android P,2,Android PC Suites,1,Android Pie,3,Android Q,2,Android R,2,Android SDK,9,Android TV,11,Android USB Drivers,2,Android Wear,10,Angry Birds,6,Anti Virus,18,App Developer,67,Apple,803,Apple CarPlay,1,Apple Pay,3,Apple Store,19,Apple TV,122,Apple Watch,87,Apps,151,ARM,2,Asus,2,ATT,7,Baidu,2,Battery,2,Bill Gates,2,Bing,16,Bitcoin,68,Bittorrent,5,BlackBerry,11,BlackBerry App,3,Blockchain,28,Blogger,53,Blogs,85,Bluetooth,7,Business,802,BuySellAds,1,Call Center,7,Camera,9,Cars,30,CCTV,1,Certifications,28,China Mobile,3,Chrome,26,Chrome OS,6,ChromeBook,2,ChromeBox,2,Chromium,4,CISPA,1,Cloud,49,CMS,7,Communication,21,Computer,80,Cortana,1,Credit Cards,10,CRM,16,Cryptocurrency,102,Currency,74,Cyberbullying,7,Cydia,49,Cydia Apps,11,Cydia Tweaks,11,Debit Cards,7,Developers,101,Digital Camera,9,Digital Marketing,432,Digital Signage,5,Disqus,1,DMCA,1,Doodle,1,DOS,1,Downgrade,18,Dropbox,1,Drupal,3,Earn Money,84,EarPods,2,eCommerce,64,Electra,6,Electronic Arts,1,Emulator,8,Encryption,2,Entrepreneurs,116,eReader,4,eSignature,2,Ethereum,30,Evasi0n,16,eWallet,12,Facebook,140,Facebook Ads,13,Facebook Apps,20,Facebook Credits,4,Facebook Developers,4,Facebook Like,8,Facebook Marketing,14,Facebook Messenger,5,Facebook Pages,9,Facebook Photos,2,Facebook Stocks,2,FacePAD,1,FaceTime,2,FileSonic,2,Finance,219,Firefox Add-Ons,2,Firefox OS,2,Fitbit,1,Foursquare,1,FP,15,Framaroot,4,Free Stuff,27,Gadgets,238,Galaxy Nexus,2,Galaxy S-Voice,2,Game of Thrones,1,Games,85,Gaming Console,12,Gaming Laptops,15,GApps,2,GearBest,6,Gifts,6,Gmail,13,Google,253,Google +1,10,Google Ads,5,Google Adsense,3,Google Adwords,6,Google Analytics,3,Google Apps,11,Google Earth,2,Google Fit,2,Google Glass,8,Google IO Conference,4,Google Map,7,Google Music,2,Google Nexus,13,Google Nexus Player,1,Google Panda,1,Google Penguins,1,Google Play Edition,1,Google Play Store,18,Google Plus,17,Google Plus Pages,6,Google Search,45,Google TV,5,Google Voice,6,Google Wallet,1,Google+,16,Google+ App,1,Google+ Pages,6,Graphic Design,19,GreenPois0n,28,Groupon,6,GSM,3,Guest Posts,10,h3lix,2,Hack,99,Hackintosh,4,Hard Disk,14,Hard Drive,17,HDD,16,Headsets,9,HealthVault,1,Home Automation,16,Honor,1,Hootsuite,1,Hostgator,2,Hotspot Shield,1,HP,2,HTC,16,HTC One,6,HTML5,16,HTTPS,3,Huawei,4,Huawei Honor,3,Hyper-V,5,IBM,2,iCloud,31,iGoogle,2,iMac,10,Infographic,212,Instagram,26,Intel,8,Internet,578,Internet Explorer,18,Internet IPOs,1,Internet Marketing,234,Internet Protocols,4,iOS,497,iOS 10,21,iOS 11,28,iOS 12,33,iOS 13,20,iOS 14,26,iOS 15,19,iOS 16,5,iOS 17,6,iOS 18,1,iOS 4,1,iOS 5,17,iOS 5.0.1,5,iOS 5.1,9,iOS 5.1.1,12,iOS 5.2,1,iOS 5.2.1,1,iOS 6,73,iOS 6.0.1,13,iOS 6.0.2,5,iOS 6.1,21,iOS 6.1.1,3,iOS 6.1.2,4,iOS 6.1.3,7,iOS 6.1.4,4,iOS 6.1.5,2,iOS 6.1.6,2,iOS 7,58,iOS 7.0.1,2,iOS 7.0.2,2,iOS 7.0.3,1,iOS 7.0.4,2,iOS 7.0.5,1,iOS 7.0.6,5,iOS 7.1,25,iOS 7.1.1,6,iOS 7.1.2,6,iOS 8,60,iOS 8.0.1,5,iOS 8.0.2,5,iOS 8.1,12,iOS 8.1.1,2,iOS 8.1.2,1,iOS 8.1.3,1,iOS 8.2,6,iOS 8.3,5,iOS 8.4,10,iOS 8.4.1,4,iOS 9,33,iOS 9.0.1,1,iOS 9.0.2,1,iOS 9.1,6,iOS 9.2,2,iOS 9.2.1,2,iOS 9.3,3,iOS 9.3.1,2,iOS 9.3.2,4,iOS 9.3.3,4,iOS 9.3.4,2,iOS 9.3.5,2,iOS Apps,96,iOS Beta,33,iOS Games,19,IP,3,iPad,457,iPad 2,54,iPad 3,47,iPad 3G,1,iPad 4,10,iPad Air,4,iPad Apps,32,iPad Mini,29,iPad Mini 2,2,iPad Siri,4,iPadOS,79,iPhone,519,iPhone 3G,51,iPhone 3GS,6,iPhone 4,62,iPhone 4S,66,iPhone 5,32,iPhone 5C,4,iPhone 5S,14,iPhone 6,31,iPhone 6 Plus,9,iPhone 7,2,iPhone Apps,32,iPhone Siri,7,IPO,3,iPod,414,iPod Apps,18,IPv4,1,IPv5,1,IPv6,1,iShower,1,iShower Speaker,1,IT,2,iTunes,198,Jailbreak,137,Jailbreak Tools,45,Jitterbug Touch,1,Joomla,5,Kaspersky,1,Keyboards,3,Keylogger,2,Kindle,9,Kindle Fire,3,Kingo,2,KingRoot,1,Laptop,78,Lasers,1,Launchers,3,Lava,1,LCD,2,Legal,5,Lenovo,2,Lenovo ThinkPad,1,LG,9,LiberiOS,2,Lightning Cables,1,Link Building,5,LinkedIn,4,Linux,13,Lockerz,1,Logitech,1,Lync Desk Phones,1,Mac,259,Mac Mini,4,Mac OS X,202,MacBook,12,MacBook Air,18,MacBook Pro,17,Macintosh,8,macOS,122,macOS 10.12,9,macOS 10.13,9,macOS 10.14,8,macOS 10.15,9,macOS 11,22,macOS 12,11,macOS 13,2,macOS 14,2,macOS 15,2,macOS Beta,8,macOS Big Sur,22,macOS Catalina,9,macOS High Sierra,9,macOS Mojave,8,macOS Monterey,11,macOS Sequoia,2,macOS Server,3,macOS Sierra,9,macOS Sonoma,2,macOS Ventura,2,Magento,5,Mambo,3,Maps,9,Mark Zuckerberg,2,Marketing,180,Marketplace,3,Meego,2,Megaupload,1,Meizu,1,Micromax,1,Microsoft,214,Microsoft Office,47,Microsoft SharePoint,1,Microsoft Surface,3,Microsoft Surface Pro,2,MIUI,3,Mobile,779,Mobile App Developers,55,Mobile Apps,222,Mobile Broadband,2,Mobile OS,32,Mortgage,1,Moto X,1,Motorola,6,Mouse,3,Movies,1,Mozilla Firefox,16,Music,20,MySpace,2,Nasdaq,1,Net Meeting,1,Nexus,7,NFC,1,Nikon,1,Nintendo,3,Nintendo 3DS,2,Nokia,31,Nokia Belle,2,Nokia Lumia,8,Nokia Normandy,1,Nokia Store,2,Nokia X,6,Notebook,1,Nuance,1,Office 2010,9,Office 2013,3,Office 2016,13,Office 2021,1,Office 365,13,OnePlus,1,Open Graph,1,Open Source,1,Opensn0w,1,Opera,6,Opera Mini,2,Operating System,120,Oppo,1,Oracle,3,Orkut,1,OS,47,OS X 10.10,65,OS X 10.10.1,6,OS X 10.10.2,9,OS X 10.10.3,10,OS X 10.10.4,6,OS X 10.10.5,4,OS X 10.11,25,OS X 10.11.1,3,OS X 10.11.2,2,OS X 10.11.3,2,OS X 10.11.4,2,OS X 10.11.5,3,OS X 10.11.6,2,OS X 10.8,2,OS X 10.9,37,OS X 10.9.1,2,OS X 10.9.2,5,OS X 10.9.3,12,OS X 10.9.4,7,OS X 10.9.5,5,OS X El Capitan,23,OS X Mavericks,40,OS X Mountain Lion,17,OS X SDK,9,OS X Server,48,OS X Server 3,5,OS X Server 4,15,OS X Server 5,9,OS X Yosemite,60,Outlook,14,Ovi,2,Ovi Store,1,P0sixspwn,1,P2P,1,PageRank,2,Pangu,11,Payments,34,Payoneer,2,PayPal,4,PDF,10,Personalization,1,PhotoBox,1,Photography,10,Picnik,1,Pinterest,2,PIPA,2,Piracy,3,PlayStation,6,PlayStation 4,4,Pocophone,2,Pod2g,2,Podcasts,2,Powerpoint,5,PP,2,Printers,12,Privacy,185,Programming,59,Projectors,4,PS4,4,PUBG,1,Python,2,QMobile,1,QMobile Noir,1,RAM,2,Redsn0w,23,Remote Access,9,Root Android,37,Rovio Mobile,4,S-Voice,2,Safari,46,Samsung,58,Samsung Galaxy,30,Schemer,1,Search Engine,84,Search Engine Marketing,82,Search Engine Results,57,Seas0nPass,2,Secure Socket Layer,3,Security,214,Selfie,1,SEM,86,SEO,157,SEO Tools,16,SERP,2,Server,18,Shopping,129,Signage,3,Sileo,4,SIM Card,4,Siri,12,SkyDrive,3,Skype,5,SlideShare,1,Small Business,541,Smart TV,6,Smart Watch,9,Smartphones,720,SMM,12,SMO,16,Sn0wbreeze,5,SnapChat,5,Social Media,157,Social Media Marketing,113,Social Media Optimization,73,Social Media Tools,12,Social Networking,204,Software,438,Sony,19,Sony Ericsson,5,Sony VAIO,1,Sony Xperia,3,SOPA,2,Speakers,3,Sprint,2,Spyware,4,SSD,16,SSL,2,Startups,389,Statistics,23,Stock,3,Stock Photography,6,Stock Photos,7,Storage,26,Store,58,Swift,12,Swype,1,Symbian,8,T-Mobile,4,Tablets,605,TaiG,5,TechGlobeX,3,TechGlobeX.net,1,Technology,389,Telephone,1,Television,10,Templates,6,TinyUmbrella,2,Tools,280,Torrent,4,Toshiba,2,Toshiba Satellite,1,TuneUp Utilities,1,TV,15,tvOS,74,Twitter,20,TypePad,3,Ubuntu,6,Ultrasn0w,1,Unlock,43,USB Debugging,2,uTorrent,5,Verizon,4,Video Marketing,20,Video Optimization,27,Videos,63,Vimeo,1,Virtualization,13,Virus,10,Visual Studio,3,Vlogging,3,Vlogs,3,Vodafone,2,Voice Call,22,VoIP,16,VPN,30,Wallpapers,1,Walmart,2,watchOS,86,Wearables,19,Web,277,Web Browser,31,Web Browser Plugins,5,Web Design,49,Web Development,86,Web Domains,16,Web Hosting,39,Web Servers,22,Western Digital,1,WhatsApp,8,Whited00r,1,WiFi,8,WiFi Calling,6,WiFi Hotspots,6,Windows,174,Windows 10,22,Windows 10 Enterprise,2,Windows 10 Mobile,1,Windows 10 Pro,2,Windows 10 Server,3,Windows 11,3,Windows 11 Enterprise,1,Windows 7,33,Windows 8,48,Windows 8 Pro,3,Windows 8 RT,3,Windows 8.1,6,Windows 8.1 Enterprise,1,Windows 9,4,Windows Apps,4,Windows Live,3,Windows Live Essentials,5,Windows Live Messenger,6,Windows Media Center,1,Windows Mobile,19,Windows Phone,47,Windows Phone 10,1,Windows Phone 7,10,Windows Phone 7.5,5,Windows Phone 8,9,Windows Phone 8.1,1,Windows Phone Apps,1,Windows Phone Mango,3,Windows Phone SDK,1,Windows Server,8,Windows Server 2012,2,Windows Server 2016,2,Windows Server 2019,1,Windows Server 2022,1,Windows Server 2025,1,Windows Server 8,1,Windows Vista,5,Windows XP,6,Wireless,4,Wordpress,54,Wordpress Plugins,6,Wordpress Themes,9,WWDC,80,Xbox,6,Xbox 360,6,Xbox One,3,Xcode,86,Xiaomi,8,Yahoo,15,Yalu,3,YouTube,19,Zong,1,ZTE,1,Zune,2,Zynga,1,
ltr
item
TechGlobeX: How to Create a Custom Web Scraper in 15 Easy Steps?
How to Create a Custom Web Scraper in 15 Easy Steps?
Planning to build a customized web scraper for the first time? Follow these 15 easy steps to master the art of web scraping.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOoyfYXc4rwxPpzig03porVBNQ54VTxWVG0iedrx_cHEkqLd_VvSvfqt6HLeusBqorwlEuKlWX_skSsjduDdmiu8M7CMBwIV5mz7ssgdQvh-tgirCBnKxUbr-3Hs0be7EiffDnwQqBb5k9cpfO7zeZldaUNCo9FATAlKiujBis3nU4vS75llO3Gprq103i/s16000/How%20to%20Create%20a%20Custom%20Web%20Scraper.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOoyfYXc4rwxPpzig03porVBNQ54VTxWVG0iedrx_cHEkqLd_VvSvfqt6HLeusBqorwlEuKlWX_skSsjduDdmiu8M7CMBwIV5mz7ssgdQvh-tgirCBnKxUbr-3Hs0be7EiffDnwQqBb5k9cpfO7zeZldaUNCo9FATAlKiujBis3nU4vS75llO3Gprq103i/s72-c/How%20to%20Create%20a%20Custom%20Web%20Scraper.jpg
TechGlobeX
https://www.techglobex.net/2023/09/how-to-create-a-web-scraper.html
https://www.techglobex.net/
https://www.techglobex.net/
https://www.techglobex.net/2023/09/how-to-create-a-web-scraper.html
true
6015647009126982431
UTF-8
Loaded All Posts Not Found Any Posts VIEW ALL Read More Reply Cancel Reply Delete By Home PAGES POSTS View All RELATED ARTICLES: TOPIC ARCHIVE SEARCH ALL POSTS Not Found Any Post Match With Your Request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Just Now 1 Minute Ago $$1$$ minutes ago 1 Hour Ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago More Than 5 Weeks Ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share To A Social Network STEP 2: Click The Link On Your Social Network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content