I am trying to crawl different websites (e-commerce websites) and extract specific information from the pages of each website (i.e. product price, quantity, date of publication, etc.). My question is: how to configure the parsing since each website has a different HTML layout which means I need different Xpaths for the same item depending on the website? Can we add multiple parser bolts in the topology for each website? If yes, how can we assign different parsefilters.json files to each parser bolt?
Applying different parsefilters to each domain in the same topology
75 Views Asked by Mohamed ET At
1
There are 1 best solutions below
Related Questions in APACHE-STORM
- ERROR: org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "maprfs"
- Use rack aware policy for kafka in apache storm
- Apache storm + Kafka Spout
- Getting classCastException when upgrade from strom/zookeepr 2.5/3.8.0 to 2.6/3.9.1
- Does SGX or Gramine support mmap files?
- Apache Storm: Get Blob download exception in Nimbus log
- Apache Storm: can't receive tuples from multiple bolts
- How to make apache storm as FIPS (Federal Information Processing Standard ) compliant
- one bolt recive from 2 others in streamparse python
- How to deploy a topology on Apache Storm Nimbus deployed on AWS ECS
- How to store custom metatags in elasticsearch index from a website using stormcrawler
- conf/storm.yaml is not populated with values coming from config map
- How to process late tuples from BaseWindowedBolt?
- Unable to Start this Storm Project
- Handing skewed processing time of events in a streaming application
Related Questions in STORMCRAWLER
- Problem passing crawler configuration yaml files to stormcrawler
- Unable to Inject URL seed file in stormcrawler
- Unable to install Stormcrawler error with connection refusal port 7071
- How to store custom metatags in elasticsearch index from a website using stormcrawler
- KryoException: Buffer underflow error in Apache Storm and Storm-Crawler
- How do I set log level in stormcrawler/storm local?
- Storm Crawler to fetch urls with query string
- StormCrawler: urlfrontier.StatusUpdaterBolt performance bottleneck
- StormCrawler - Metadata fields not being persisted
- Logging DEBUG messages in Stormcrawler
- I started web crawling using Storm Crawler but I do not know where crawled results go to? Im not using Solr or Elastic Search
- StormCrawler: setting "maxDepth": 0 prevents ES seed injection
- Problem running example topology with storm-crawler 2.3-SNAPSHOT
- Replacement of ESSeedInjector in storm-crawler 2.2
- What is the meaning of bucket in StormCrawler spouts?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You need #586. At the moment there is no way to do it but to put all your XPATH expressions regardless of the site you want to use them on in the parsefilters.json.
You can't assign different parsefilters.json to the various instances of a bolt.
UPDATE however you could have multiple XpathFilters sections within the parseFilters.json. Each could cover a specific source, however, there is currently no way of constraining which source a parse filter gets applied to. You could extend XPathFilter so that it takes some extra config e.g. regular expression a URL must match in order to be applied. That would work quite nicely I think.
I've recently added JsoupFilters which will be in the next release. These should be useful for your use case but that still doesn't solve the issue that you need an implementation of the filter that organizes the resources per host. It shouldn't be too hard to implement taking the URL filter one as a example and would also make a very nice contribution to the project.