diff --git a/docs/tutorials/migrating_from_beautifulsoup.md b/docs/tutorials/migrating_from_beautifulsoup.md index e5474bb..84d19a9 100644 --- a/docs/tutorials/migrating_from_beautifulsoup.md +++ b/docs/tutorials/migrating_from_beautifulsoup.md @@ -18,7 +18,7 @@ You will notice that some shortcuts in BeautifulSoup are missing in Scrapling, w | Finding a single element (Example 4) | `element = soup.find(lambda e: len(list(e.children)) > 0)` | `element = page.find(lambda e: len(e.children) > 0)` | | Finding a single element (Example 5) | `element = soup.find(["a", "b"])` | `element = page.find(["a", "b"])` | | Find element by its text content | `element = soup.find(text="some text")` | `element = page.find_by_text("some text", partial=False)` | -| Using CSS selectors to find the first matching element | `elements = soup.select_one('div.example')` | `elements = page.css_first('div.example')` | +| Using CSS selectors to find the first matching element | `elements = soup.select_one('div.example')` | `elements = page.css('div.example').first` | | Using CSS selectors to find all matching element | `elements = soup.select('div.example')` | `elements = page.css('div.example')` | | Get a prettified version of the page/element source | `prettified = soup.prettify()` | `prettified = page.prettify()` | | Get a Non-pretty version of the page/element source | `source = str(soup)` | `source = page.body` | @@ -84,7 +84,7 @@ As you can see, Scrapling simplifies the process by combining fetching and parsi - **Different parsers**: BeautifulSoup allows you to set the parser engine to use, and one of them is `lxml`. Scrapling doesn't do that and uses the `lxml` library by default for performance reasons. - **Element Types**: In BeautifulSoup, elements are `Tag` objects; in Scrapling, they are `Selector` objects. However, they provide similar methods and properties for navigation and data extraction. -- **Error Handling**: Both libraries return `None` when an element is not found (e.g., `soup.find()` or `page.css_first()`). To avoid errors, check for `None` before accessing properties. +- **Error Handling**: Both libraries return `None` when an element is not found (e.g., `soup.find()` or `page.find()`). In Scrapling, `page.css()` returns an empty `Selectors` list when no elements match, and you can use `page.css('.foo').first` to safely get the first match or `None`. To avoid errors, check for `None` or empty results before accessing properties. - **Text Extraction**: Scrapling provides additional methods for handling text through `TextHandler`, such as `clean()`, which can help remove extra whitespace, consecutive spaces, or unwanted characters. Please check out the documentation for the complete list. The documentation provides more details on Scrapling's features and the complete list of arguments that can be passed to all methods.