[Bug]: When extracting data with scroll_full_page, only the final elements get parsed
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
- #1877 di @hafezparast — chiusa senza merge
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 47/100
Direzione di ricerca
Reproduce the issue with AsyncWebCrawler and CrawlerRunConfig against the supplied X URL, comparing scroll_full_page on and off. Inspect how result.html, screenshots, and JsonCssExtractionStrategy process the scrolled page. Done means extraction retains the full set of visible profiles rather than only the final elements, with the existing reproduction succeeding.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
crawl4ai version
0.4.248
Expected Behavior
I'm crawiling Twitter, specifically the "following" section of a profile. I have a css selector for the relevant data (user's names and bios) and set up a JsonCssExtractionStrategy. If I don't use scroll_full_page, I understandably only expect to get the first N user profiles. But if I do enable scroll_full_page, I expect the returned data to contain the list to the fullest extent as visible when browsing manually.
Current Behavior
When not using scroll_full_page, I do get the first 16 profiles in this case. However, when setting scroll_full_page, I only get the LAST 12. It's important to note that there are over 40 profiles listed, so none of the 12 profiles intersect with the first 16. I checked the result's html property and it does only contain information about the last 12. However, strangely the screenshot saved contains all the profiles.
Is this reproducible?
Yes
Inputs Causing the Bug
https://x.com/SomeTwitterProfile/following
Steps to Reproduce
Execute the following snippet with both scoll_full_page on and off.
Code snippets
site_url = "https://x.com/elonmusk/following"
import asyncio
from crawl4ai import AsyncWebCrawler, CacheMode, BrowserConfig, CrawlerRunConfig
from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator
from crawl4ai.extraction_strategy import JsonCssExtractionStrategy
import json
async def main():
schema = {
"name": "Followers",
"baseSelector": "button[data-testid='UserCell']",
"fields": [
{
"name": "name",
"selector": "span",
"type": "text"
},
{
"name": "handle",
"selector": 'a[role="link"] > div > div[dir="ltr"]:only-child > span ',
"type": "text"
},
{
"name": "bio",
"selector": "div[dir='auto'] > span",
"type": "html",
}
]
}
extraction_strategy = JsonCssExtractionStrategy(schema, verbose=True)
browser_conf = BrowserConfig(
extra_args=['--disable-web-security'],
cookies=[
{"name": "auth_token", "value": "YOURAUTHTOKEN", "domain": ".x.com", "path": "/"},
],
)
crawler_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS, # cache_mode=CacheMode.BYPASS/DISABLED,
screenshot=True,
wait_for="css:button[data-testid='UserCell']:nth-child(1)",
page_timeout=5000,
extraction_strategy=extraction_strategy,
# scan_full_page=True,
scroll_delay=1.5,
)
try:
async with AsyncWebCrawler(
config=browser_conf,
verbose=True,
) as crawler:
result = await crawler.arun(
url=site_url ,
config=crawler_config,
)
from base64 import b64decode
with open("screenshot.png", "wb") as f:
f.write(b64decode(result.screenshot))
with open("index.html", "w") as f:
f.write(result.html)
data = json.loads(result.extracted_content)
print(f"Extracted {len(data)} users")
print(json.dumps(data, indent=2) if data else "No data found")
except Exception as e:
print(f"Something happened: {e}")
raise e
if __name__ == "__main__":
asyncio.run(main())
OS
Linux
Python version
3.12.9
Browser
Default
Browser version
No response
Error logs & Screenshots (if applicable)
No response
- Lingua principale
- Python
- Stelle
- 85.9k
- Fork
- 8.9k
- Merge medio
- 5g 7h
- PR unite (30g)
- 23
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di unclecode/crawl4ai
-
[Bug]: Text after an inline <link>, <meta>, <style> or <noscript> is dropped from cleaned_html and markdownForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
unclecode/crawl4ai#2416 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Since 0.9.1, Linux launches chrome-headless-shell instead of ChromiumForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
unclecode/crawl4ai#2382 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: BestFirstCrawlingStrategy fetches a full batch past max_pagesForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
unclecode/crawl4ai#2381 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: CrawlerRunConfig.clone() drops fallback_fetch_function, so deep crawls never use itForse già presa @siva23367 l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
unclecode/crawl4ai#2379 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Docker memory guard reads host RAM when no container limit is set — cgroup v2 "max" defeats get_container_memory_percentForse già presa @Battleplus l’ha presa 57 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
unclecode/crawl4ai#2123 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di unclecode/crawl4ai
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
[Device Support Request] HOBEIAN ZG-204ZL (Tuya PIR motion sensor with illuminance)Forse già presa @lenucksi l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
zigpy/zha-device-handlers#5493 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
drevendev/BeautifulRepo#42 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
writerslogic/holographic-memory#93 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
antoine-tena/kiln#47 ·
I maintainer di solito rispondono entro 1 giorno