I recently started up FreshRSS in my docker environment. I was super excited about the web scraping feature.
Now that I’m setting it up, it looks like that it is able to scrape single web pages, but I am unable to figure out how to get it to crawl into the actual article to scrape the full content.
Is anyone aware of how to do this. For example, runescape.com/m=news/ This page has a list of articles with a thumbnail, title, category, date, and a short description of the article. Would it be possible for FreshRSS to crawl into the article link and scrape the contents within?
I haven’t tried it yet and it depends on an outside service, but maybe https://morss.it/ can help?
Note: it can be selfhosted
I didn’t know about morss.it. It’s amazing, thank you.
It can be done directly in FreshRSS and I’ve done it successfully with a few websites, though the process is fairly involved. Here’s a starting point, from the FreshRSS documentation:
https://freshrss.github.io/FreshRSS/en/users/11_website_scraping.html
This blog post (also linked in the FreshRSS docs above) proved extremely useful as an example on how to get started:
https://danq.me/2022/09/27/freshrss-xpath/
Good luck!
Thanks a ton for those links
Before you go reading all that, out of curiosity I looked around the RuneScape site and found the News RSS feed here:
https://secure.runescape.com/m=news/latest_news.rss
That feed contains only titles, thumbnails and a very small preview of each article. However, with FreshRSS you don’t need to do scraping/crawling at all to get full articles from limited RSS feeds like this one. Here’s what you do:
- Subscribe to the RSS feed in FreshRSS as you normally would.
- Go to Subscription Management and find the settings for the RuneScape feed.
- In the Advanced section of the feed settings, find the item called “Article CSS selector on original website”, and write
.c-news-article__content
in that text box. You can click on the button next to the text box to preview the full article that FreshRSS will retrieve. - Click Submit to save the changes, and then go to the bottom of the feed settings and click Reload articles so that FreshRSS populates the feed with a few full articles.
That should do it. The CSS selector essentially tells FreshRSS which section of the full article’s HTML/CSS is the body of the article, which FreshRSS then uses to populate the body of the RSS feed.
Thank you so much! This worked out fantastically and it also looks great in the feed. I don’t know how you figured this stuff out but I need to get learned up on this!
Would you be able to help me on Humble Bundles feed?
I am using the RSS Feed:
When trying to use the same process you did in the RuneScape feed, it didn’t seem to work.
I go to the full articles, I found that the content is listed in the Class
site-content container clearfix
. Attempting to add.site-content container clearfix
in the Article CSS selector on original website area. It says The selector didn’t match anything. As a fallback the original feed text will be displayed instead.Could you tell me what I’m doing wrong?
Using
.site-content container clearfix
didn’t work because those are actually three separate CSS classes, so you’d have to use only one - for example.site-content
. However, it looks like.site-content
is too big, as it includes the website’s sidebar as well. You may already know this but in Firefox and Chrome you can right click anywhere on the website and use the Inspect option to look at the source, and clicking on a section of the source highlights the corresponding section of the website and this will help you find exactly the CSS class you’re looking for. I did this on a couple articles from Humble Bundle and found a couple of options:.post
: This includes only the content of the post, excluding the title and the image..site-main
: This includes the title, author, image and the content.
Another useful tool in FreshRSS I forgot to mention is “CSS selector of the elements to remove”. You can use it to remove certain section from the full article, I’d recommend removing
.sharedaddy
and.entry-footer
(the sharing links at the end of the article), and also.entry-header
if you use.site-main
as the CSS selector for the full article (.entry-header
is the title of the article, but FreshRSS already fetches it from the RSS feed so you don’t need it in the body of the article as well). You can remove multiple sections by using a comma-separated list of CSS classes to remove:.entry-header, .sharedaddy, .entry-footer
Thank you again :). From your explanation, I think I have a good grasp on how to identify the proper CSS elements now.
Have a wonderful day!
No problem! FreshRSS really is amazing so I’m happy to help and spread the love.