RSS-Bridge / RSS-Bridge/rss-bridge

Adopt WebDriverAbstract as a solution for active (JavaScript) websites

Open
#3,970 32 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Feature-Request
Dominant language
PHP
Stars
9.2k
Forks
1.2k
Avg merge
12h 45m
Merged PRs (30d)
2

Description

Hello everyone,

A few weeks ago I came across the well-known problem that rss-bridge doesn't work for some websites. This is always the case when the website loads some content via XMLHttpRequest (XHR) and / or changes it using JavaScript.
After some experimentation and thinking about the problem, I came to the conclusion that it can only be solved using a web browser. Coincidentally, I already had a lot of experience with Selenium and the WebDriver and decided to come up with a solution.

I now suggest that the WebDriverAbstract class be imported into the project, temporarily in its own branch. As examples I have written two bridges that use these.

The following problems still need to be solved:

  • I didn't commit my composer.lock because the changes look random and I didn't want to invest time (yet) to understand composer.
  • I have added the php-webdriver dependencies to bootstrap.php, but they are not complete. They look messy and unsorted because of the dependencies between them. I suggest to use the autoloader.
  • All bridges that depend on WebDriverAbstract would create high(er) load on a multi-user (open) server. Maybe there should be an option to disable the class instead of each bridge using it.
  • Because loading web pages through a browser is such a heavier load, it would make sense to stop scraping as soon as an element is in a cache (assuming the elements are sorted chronologically). Is there already a cache for elements that have already been scraped? How can I use it? I looked around the code but didn't find any examples of this or documentation.
  • What do you miss in the documentation for WebDriverAbstract?

Kind regards,

Holger

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the proposed WebDriverAbstract class, its two example bridges, bootstrap.php, and composer.lock. Trace the php-webdriver dependencies and existing cache or scraping documentation before deciding how adoption should work. Done means the dependencies and autoloading are complete, server load can be controlled, scraping can use the relevant cache behavior, and WebDriverAbstract documentation gaps are addressed.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.