{"id":2206,"date":"2026-02-09T12:41:19","date_gmt":"2026-02-09T12:41:19","guid":{"rendered":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206"},"modified":"2026-05-21T19:03:32","modified_gmt":"2026-05-21T19:03:32","slug":"programacio-del-webscraping","status":"publish","type":"page","link":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206","title":{"rendered":"Programaci\u00f3 del WebScraping"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En aquesta pr\u00e0ctica he millorat el &#8220;cervell&#8221; del meu xatbot. He passat d&#8217;un sistema que nom\u00e9s llegia el que jo li escrivia en fitxers, a un sistema de <strong>WebScraping<\/strong> que \u00e9s capa\u00e7 de llegir tot el meu portafolis sol.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. D&#8217;on ven\u00edem? (Codi del trimestre passat)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Al principi, el xatbot era molt limitat. Si jo volia que sab\u00e9s alguna cosa nova, havia de crear un fitxer <code>.json<\/code> a m\u00e0 i pujar-lo. Era una feina molt pesada i lenta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Aquest era el codi antic:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>C\u00c0RREGA DE DADES MANUAL (M\u00e8tode antic)<br>def carregar_dades():<br>docs = [&#8216;Lanparty.json&#8217;, &#8216;Faq.json&#8217;, &#8216;Normativa.json&#8217;]<br>resum = &#8220;&#8221;<br>for d in docs:<br>if os.path.exists(d):<br>with open(d, &#8216;r&#8217;, encoding=&#8217;utf-8&#8242;) as f:<br>resum += f.read()<br>return resum<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"396\" title=\"image-3-1024x396\" src=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3-1024x396.png\" alt=\"\" class=\"wp-image-3035\" srcset=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3-1024x396.png 1024w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3-300x116.png 300w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3-768x297.png 768w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3-1536x594.png 1536w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3.png 1774w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\ude80 L&#8217;evoluci\u00f3 del meu Xatbot: De fitxers fixos a l&#8217;exploraci\u00f3 web<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">En aquesta pr\u00e0ctica he millorat el &#8220;cervell&#8221; del meu xatbot. He passat d&#8217;un sistema que nom\u00e9s llegia el que jo li escrivia en fitxers, a un sistema de <strong>WebScraping<\/strong> que \u00e9s capa\u00e7 de llegir tot el meu portafolis sol.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. D&#8217;on ven\u00edem? (Codi del trimestre passat)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Al principi, el xatbot era molt limitat. Si jo volia que sab\u00e9s alguna cosa nova, havia de crear un fitxer <code>.json<\/code> a m\u00e0 i pujar-lo. Era una feina molt pesada i lenta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Aquest era el codi antic:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># C\u00c0RREGA DE DADES MANUAL (M\u00e8tode antic)\ndef carregar_dades():\n    docs = &#91;'Lanparty.json', 'Faq.json', 'Normativa.json']\n    resum = \"\"\n    for d in docs:\n        if os.path.exists(d):\n            with open(d, 'r', encoding='utf-8') as f:\n                resum += f.read()\n    return resum\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. El gran canvi: El Crawler Recursiu (BeautifulSoup)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ara he programat un <strong>Crawler<\/strong>. \u00c9s com un robot que entra a la meva web (<code>ajaimes.inscastellbisbal.net<\/code>) i va clicant tots els enlla\u00e7os que troba per llegir-ho tot. Faig servir <strong>BeautifulSoup<\/strong> per &#8220;netejar&#8221; la web: treu els anuncis, els men\u00fas i els botons, i es queda nom\u00e9s amb el text important.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Com m&#8217;ha ajudat la IA?<\/strong> La IA m&#8217;ha ensenyat a fer servir una cosa anomenada <code>while<\/code>. Aix\u00f2 fa que el bot no s&#8217;avorreixi: mentre trobi p\u00e0gines noves, les va llegint fins a arribar al l\u00edmit que jo li hagi posat (per exemple, 260 p\u00e0gines).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prompt que he fet servir:<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>&#8220;Necessito un codi que en lloc de llegir fitxers JSON, entri a la meva web i busqui tots els links que hi ha per llegir el text de cada p\u00e0gina autom\u00e0ticament.&#8221;<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Programaci\u00f3 de seguretat (Try-Except i Timeouts)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Internet \u00e9s complicat i de vegades les p\u00e0gines fallen. Perqu\u00e8 el meu programa no es trenqui, he afegit &#8220;escuts de seguretat&#8221;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Try-Except:<\/strong> Si un link est\u00e0 trencat, el bot no &#8220;peta&#8221;, simplement m&#8217;avisa i passa al seg\u00fcent.<\/li>\n\n\n\n<li><strong>Timeout:<\/strong> Si una p\u00e0gina tarda massa a carregar (m\u00e9s de 10 segons), el bot la deixa estar i continua.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>CODI ACTUAL: El Crawler autom\u00e0tic<br>while to_visit and len(visited) &lt; MAX_PAGES:<br>url = to_visit.pop()<br>try:<br>res = requests.get(url, timeout=10, verify=False)<br>soup = BeautifulSoup(res.text, &#8216;html.parser&#8217;)<br># Netegem el text de la web<br>page_text = &#8216; &#8216;.join(soup.get_text().split())<br>all_text += f&#8221;\\n&#8212; P\u00c0GINA: {url} &#8212;\\n{page_text}\\n&#8221;<br>except Exception as e:<br>print(f&#8221;Error a {url}: {e}&#8221;)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"395\" title=\"image-4-1024x395\" src=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-4-1024x395.png\" alt=\"\" class=\"wp-image-3036\" srcset=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-4-1024x395.png 1024w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-4-300x116.png 300w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-4-768x296.png 768w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-4-1536x592.png 1536w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-4.png 1775w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"508\" title=\"image-5-1024x508\" src=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-5-1024x508.png\" alt=\"\" class=\"wp-image-3037\" srcset=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-5-1024x508.png 1024w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-5-300x149.png 300w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-5-768x381.png 768w, https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-5.png 1152w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">4. Resultat final i connexi\u00f3 amb la IA<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tota la informaci\u00f3 que el bot ha llegit a la meva web es guarda en una variable. Despr\u00e9s, li passem aquesta variable al model <strong>Gemini<\/strong> de Google amb unes instruccions perqu\u00e8 s\u00e0piga que ha de respondre com si fos el meu assistent personal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Com m&#8217;ha ajudat la IA?<\/strong> M&#8217;ha ajudat a solucionar errors de seguretat (com el <strong>CORS<\/strong>) i a fer que el bot ignori fotos o PDFs que no pot llegir, fent que el programa sigui molt m\u00e9s intel\u00b7ligent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En aquesta pr\u00e0ctica he millorat el &#8220;cervell&#8221; del meu xatbot. He passat d&#8217;un sistema que nom\u00e9s llegia el que jo li escrivia en fitxers, a un sistema de WebScraping que \u00e9s capa\u00e7 de llegir tot el meu portafolis sol. 1. D&#8217;on ven\u00edem? (Codi del trimestre passat) Al principi, el xatbot era molt limitat. Si jo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2202,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"saved_in_kubio":false,"_dseop_meta":"{\"noFollowLinks\":{\"linkList\":[],\"ignoredGlobalDomains\":[],\"textboxValue\":\"\"},\"schemaMarkup\":{\"schemas\":[{\"templateId\":\"WebpageSchema\",\"name\":\"Webpage\",\"id\":\"WebpageSchema\",\"schemaData\":{\"@type\":\"WebPage\",\"@id\":\"\",\"name\":\"\",\"url\":\"\",\"description\":\"\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"@id\":\"\"},\"datePublished\":\"\",\"dateModified\":\"\",\"inLanguage\":\"\"}}],\"schemaTemplates\":[]},\"metaDescription\":{\"metaData\":[]},\"keywordAppearance\":{\"contentDetails\":[{\"name\":\"Word count\",\"count\":566,\"id\":\"wordCount\",\"status\":\"average\",\"detailStatus\":\"shortAverage\",\"tooltip\":\"words count should be greater then 1500.\"},{\"id\":\"heading1\",\"name\":\"heading 1\",\"count\":2,\"status\":\"poor\",\"detailStatus\":\"longPoor\",\"tooltip\":\"web page should have one h1 tag for better SEO\"},{\"id\":\"heading2\",\"name\":\"heading 2\",\"count\":5,\"status\":\"excellent\",\"detailStatus\":\"excellent\",\"tooltip\":\"good use of h2 tags.\"},{\"id\":\"heading3\",\"name\":\"heading 3\",\"count\":0,\"status\":\"poor\",\"detailStatus\":\"missing\",\"tooltip\":\"web page should have h3 tags for better SEO\"},{\"id\":\"paragraphTags\",\"name\":\"paragraph tags\",\"count\":14,\"status\":\"excellent\",\"detailStatus\":\"excellent\",\"tooltip\":\"good use of paragraph tags.\"},{\"id\":\"boldAndStrongTags\",\"name\":\"bold and strong tags list\",\"count\":13,\"status\":\"excellent\",\"detailStatus\":\"excellent\",\"tooltip\":\"good use of bold and strong tags.\"},{\"name\":\"Avg. Stopword percentage\",\"count\":9,\"id\":\"averageStopwordPercentage\"},{\"name\":\"Avg. Words per sentence\",\"count\":20,\"id\":\"averageWordsPerSentence\"},{\"name\":\"Stopword count\",\"count\":51,\"id\":\"sentenceCount\"},{\"name\":\"Sentence count\",\"count\":29,\"id\":\"sentenceCount\"},{\"name\":\"Letter count\",\"count\":2556,\"id\":\"letterCount\"},{\"name\":\"Difficult word\",\"count\":87,\"id\":\"difficultWord\"}],\"advanceOptions\":[],\"modifyStopwords\":{\"customStopwords\":[],\"disabledStopwords\":[]}},\"socialMedia\":{\"openGraphData\":[],\"twitterData\":{\"xSummaryCardData\":[],\"xAppCardData\":{\"iphoneAppName\":\"\",\"iphoneAppId\":\"\",\"iphoneAppUrl\":\"\",\"ipadAppName\":\"\",\"ipadAppId\":\"\",\"ipadAppUrl\":\"\",\"googlePlayAppName\":\"\",\"googlePlayAppId\":\"\",\"googlePlayAppUrl\":\"\",\"appCountry\":\"\"},\"xPlayerCardData\":{\"player\":\"\",\"playerWidth\":\"\",\"streamUrl\":\"\",\"streamContentType\":\"\"}}},\"readability\":{\"readabilityFactorList\":[{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Flesch - Kincaid reading ease\",\"score\":45.38,\"description\":\"The Flesch-Kincaid Reading Ease score measures the readability of your text. A higher score indicates easier-to-read content. Aim for a score between 60 and 70 for most web content.\",\"grade\":\"Difficult (College)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Gunning fog score\",\"score\":10.34,\"description\":\"The Gunning Fog Score estimates the years of formal education needed to understand your text. Lower scores indicate easier readability. Aim for a score of 7 to 8 for general audiences.\",\"grade\":\"High School (Grade 9-12)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Coleman liau index\",\"score\":7.93,\"description\":\"The Coleman-Liau Index calculates readability based on characters per word and sentence length. It estimates the U.S. school grade level required to comprehend the text. A lower score suggests easier content.\",\"grade\":\"Middle School (Grade 7-8)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Flesch - Kincaid grade level\",\"score\":9.53,\"description\":\"The Flesch-Kincaid Grade Level formula evaluates the readability of your text by calculating the U.S. school grade level. A lower grade level indicates easier readability.\",\"grade\":\"High School (Grade 9-12)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Smog index\",\"score\":10.38,\"description\":\"The SMOG (Simple Measure of Gobbledygook) Index estimates the years of education a person needs to understand a text. A lower score means simpler text, while a higher score suggests more complex content.\",\"grade\":\"High School (Grade 9-12)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Automated readability index\",\"score\":5.08,\"description\":\"The Automated Readability Index calculates the readability of your content using characters per word and words per sentence. It estimates the U.S. school grade level needed to understand the text.\",\"grade\":\"Elementary School (Grade 6 or below)\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Dale chall readability score\",\"score\":6.58,\"description\":\"The Dale-Chall Readability Score evaluates the readability of your text based on familiar words and sentence structure. A lower score indicates that the content is easier to read.\",\"grade\":\"7th-8th grade\"},{\"helpLink\":\"link\",\"isError\":false,\"name\":\"Spache readability score\",\"score\":1.93,\"description\":\"The Spache Readability Score measures the readability of texts for younger readers. It identifies words that are unfamiliar to children and calculates a score accordingly. A lower score indicates easier content.\",\"grade\":\"2nd grade\"}]},\"advanceSetting\":{\"advanceRobotsMeta\":[],\"breadcrumbTitle\":\"\",\"canonicalURL\":\"\",\"criticalOptions\":[]},\"scoring\":{\"subScoring\":{\"metaDescriptionScore\":7,\"schemaMarkupScore\":8,\"outwardInterlinkingScore\":0,\"inwardInterlinkingScore\":0,\"socialMediaScore\":3,\"misspelledWordsScore\":0,\"advanceSettingScore\":3,\"noFollowLinksScore\":0,\"keywordAppearanceScore\":1,\"imageAnalyticsScore\":1},\"singlePostScore\":35},\"misspelledWords\":[],\"pointsToImprove\":{\"count\":{\"criticalPointsCount\":0,\"recommendedPointsCount\":0},\"pointsToImproveDetails\":{\"searchEngineAppearance\":[{\"id\":\"recommended_keyword_missing_meta_title\",\"name\":{\"label\":\"Keyword is missing in meta title.\"},\"type\":\"Critical\",\"priority\":\"too_high\"},{\"id\":\"critical_meta_description_too_long\",\"name\":{\"label\":\"Meta description is too long\"},\"type\":\"Critical\"},{\"id\":\"recommended_meta_description_with_no_selected_keyword\",\"name\":{\"label\":\"There in no keyword in your meta description.\"},\"type\":\"Critical\"},{\"id\":\"recommended_keyword_missing_permalink\",\"name\":{\"label\":\"Keyword is missing in permalink.\"},\"type\":\"Critical\"}],\"searchEngineVisibility\":[],\"redirectedLink301\":[],\"socialMedia\":[{\"id\":\"critical_missing_social_media_image\",\"name\":{\"label\":\"Image is missing in social media appearance.\"},\"type\":\"Critical\",\"priority\":\"high\"},{\"id\":\"recommended_keyword_missing_open_graph_title\",\"name\":{\"label\":\"Keyword is missing in social media title.\"},\"type\":\"Recommended\"},{\"id\":\"recommended_keyword_missing_open_graph_description\",\"name\":{\"label\":\"Keyword is missing in social media description.\"},\"type\":\"Recommended\"},{\"id\":\"critical_too_long_social_media_description\",\"name\":{\"label\":\"Description is Too long in social media appearance.\"},\"type\":\"Critical\"},{\"id\":\"critical_missing_social_media_twitter_image\",\"name\":{\"label\":\"X(Twitter) image is missing in social media appearance.\"},\"type\":\"Critical\",\"priority\":\"high\"},{\"id\":\"recommended_keyword_missing_twitter_title\",\"name\":{\"label\":\"Keyword is missing in X(Twitter) title.\"},\"type\":\"Recommended\"},{\"id\":\"recommended_keyword_missing_twitter_description\",\"name\":{\"label\":\"Keyword is missing in X(Twitter) description.\"},\"type\":\"Recommended\"},{\"id\":\"critical_too_long_social_media_twitter_description\",\"name\":{\"label\":\"X(Twitter) description is Too long in social media appearance.\"},\"type\":\"Critical\"}],\"noFollowLink\":[],\"misspelledWords\":[],\"inwardLinks\":[],\"outwardLinks\":[],\"keywordAppearance\":[{\"id\":\"critical_no_selected_keyword\",\"name\":{\"label\":\"Selected keyword missing in keyword appearance.\"},\"type\":\"Critical\",\"priority\":\"too_high\"},{\"id\":\"critical_word_count_is_low\",\"name\":{\"label\":\"Word count is low in your content add more words.\"},\"type\":\"Recommended\"},{\"id\":\"critical_h1_is_too_high\",\"name\":{\"label\":\"H1 tags is too high in your content.\"},\"type\":\"Critical\",\"priority\":\"too_high\"},{\"id\":\"critical_heading3_is_missing\",\"name\":{\"label\":\"Missing H3 tags, consider adding H3 for better SEO.\"},\"type\":\"Critical\"}],\"advanceSettings\":[],\"schemaMarkup\":[],\"imageAnalytics\":[{\"id\":\"critical_missing_images_title_attribute\",\"name\":{\"label\":\"Missing images title attribute.\"},\"type\":\"Critical\"},{\"id\":\"critical_missing_images_alt_attribute\",\"name\":{\"label\":\"Missing images alt attribute.\"},\"type\":\"Critical\"},{\"id\":\"critical_keyword_missing_in_image_filename\",\"name\":{\"label\":\"Keyword missing in images filename.\"},\"type\":\"Critical\"}],\"productGtins\":[]}},\"imageAnalytics\":{\"imageAnalysis\":[{\"id\":\"TotalImages\",\"name\":\"Total images\",\"value\":\"3\"},{\"id\":\"ImagesHasTitle\",\"name\":\"Images has title\",\"value\":\"0\",\"outOff\":\"3\",\"status\":\"poor\",\"tooltip\":\"Missing image title attribute\"},{\"id\":\"ImageHasAltAttribute\",\"name\":\"Images has alt\",\"value\":\"0\",\"outOff\":\"3\",\"status\":\"poor\",\"tooltip\":\"Missing alt attribute\"},{\"id\":\"ImagesHasProperFileName\",\"name\":\"Images has proper filename format\",\"value\":\"3\",\"outOff\":\"3\",\"status\":\"excellent\",\"tooltip\":\"Good! all images has proper filename format\"},{\"id\":\"KeywordInTitleAttribute\",\"name\":\"Keyword in image title\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\",\"tooltip\":\"Add image title attribute to enable this feature.\"},{\"id\":\"KeywordInAltAttribute\",\"name\":\"Keyword in image Alt\",\"value\":\"0\",\"outOff\":\"0\",\"status\":\"disabled\",\"tooltip\":\"Add image alt attribute to enable this feature.\"},{\"id\":\"KeywordInFilename\",\"name\":\"Keyword in image filename\",\"value\":\"0\",\"outOff\":\"3\",\"status\":\"poor\",\"tooltip\":\"Missing keyword in image filename\"}]}}","_dseop_selected_keywords":"","footnotes":""},"class_list":["post-2206","page","type-page","status-publish","hentry"],"kubio_ai_page_context":{"short_desc":"","purpose":"general"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programaci\u00f3 del WebScraping - Adrian Jaimes<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206\" \/>\n<meta property=\"og:locale\" content=\"ca_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programaci\u00f3 del WebScraping - Adrian Jaimes\" \/>\n<meta property=\"og:description\" content=\"En aquesta pr\u00e0ctica he millorat el &#8220;cervell&#8221; del meu xatbot. He passat d&#8217;un sistema que nom\u00e9s llegia el que jo li escrivia en fitxers, a un sistema de WebScraping que \u00e9s capa\u00e7 de llegir tot el meu portafolis sol. 1. D&#8217;on ven\u00edem? (Codi del trimestre passat) Al principi, el xatbot era molt limitat. Si jo [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206\" \/>\n<meta property=\"og:site_name\" content=\"Adrian Jaimes\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-21T19:03:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1774\" \/>\n\t<meta property=\"og:image:height\" content=\"686\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Temps estimat de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minuts\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206\",\"name\":\"Programaci\u00f3 del WebScraping - Adrian Jaimes\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/image-3-1024x396.png\",\"datePublished\":\"2026-02-09T12:41:19+00:00\",\"dateModified\":\"2026-05-21T19:03:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206#breadcrumb\"},\"inLanguage\":\"ca\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206#primaryimage\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/image-3.png\",\"contentUrl\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/image-3.png\",\"width\":1774,\"height\":686},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2206#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inici\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"1r SMX\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=1084\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Repte 1.4\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=1496\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"2\ufe0f\u20e3 &#8211; \u200b\ud83e\udd16\u200b &#8211; El Xatbot\",\"item\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?page_id=2202\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Programaci\u00f3 del WebScraping\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#website\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/\",\"name\":\"Adrian Jaimes\",\"description\":\"S\u00f3c estudiant d&#039;inform\u00e0tica i aqu\u00ed podr\u00e0s veure el meu cam\u00ed acad\u00e8mic, els projectes que he realitzat i els coneixements que he adquirit durant la meva formaci\u00f3. Aquesta p\u00e0gina \u00e9s un reflex de la meva passi\u00f3 per la tecnologia i el meu comprom\u00eds per seguir aprenent i millorant cada dia.  Explora els meus treballs i seguiment acad\u00e8mic!\",\"publisher\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ca\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#organization\",\"name\":\"Adrian Jaimes\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/cropped-cropped-cropped-width_550_009.webp\",\"contentUrl\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/cropped-cropped-cropped-width_550_009.webp\",\"width\":512,\"height\":512,\"caption\":\"Adrian Jaimes\"},\"image\":{\"@id\":\"https:\\\/\\\/ajaimes.inscastellbisbal.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programaci\u00f3 del WebScraping - Adrian Jaimes","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206","og_locale":"ca_ES","og_type":"article","og_title":"Programaci\u00f3 del WebScraping - Adrian Jaimes","og_description":"En aquesta pr\u00e0ctica he millorat el &#8220;cervell&#8221; del meu xatbot. He passat d&#8217;un sistema que nom\u00e9s llegia el que jo li escrivia en fitxers, a un sistema de WebScraping que \u00e9s capa\u00e7 de llegir tot el meu portafolis sol. 1. D&#8217;on ven\u00edem? (Codi del trimestre passat) Al principi, el xatbot era molt limitat. Si jo [&hellip;]","og_url":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206","og_site_name":"Adrian Jaimes","article_modified_time":"2026-05-21T19:03:32+00:00","og_image":[{"width":1774,"height":686,"url":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Temps estimat de lectura":"4 minuts"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206","url":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206","name":"Programaci\u00f3 del WebScraping - Adrian Jaimes","isPartOf":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206#primaryimage"},"image":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206#primaryimage"},"thumbnailUrl":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3-1024x396.png","datePublished":"2026-02-09T12:41:19+00:00","dateModified":"2026-05-21T19:03:32+00:00","breadcrumb":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206#breadcrumb"},"inLanguage":"ca","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206"]}]},{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206#primaryimage","url":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3.png","contentUrl":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2026\/04\/image-3.png","width":1774,"height":686},{"@type":"BreadcrumbList","@id":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2206#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inici","item":"https:\/\/ajaimes.inscastellbisbal.net\/"},{"@type":"ListItem","position":2,"name":"1r SMX","item":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=1084"},{"@type":"ListItem","position":3,"name":"Repte 1.4","item":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=1496"},{"@type":"ListItem","position":4,"name":"2\ufe0f\u20e3 &#8211; \u200b\ud83e\udd16\u200b &#8211; El Xatbot","item":"https:\/\/ajaimes.inscastellbisbal.net\/?page_id=2202"},{"@type":"ListItem","position":5,"name":"Programaci\u00f3 del WebScraping"}]},{"@type":"WebSite","@id":"https:\/\/ajaimes.inscastellbisbal.net\/#website","url":"https:\/\/ajaimes.inscastellbisbal.net\/","name":"Adrian Jaimes","description":"S\u00f3c estudiant d&#039;inform\u00e0tica i aqu\u00ed podr\u00e0s veure el meu cam\u00ed acad\u00e8mic, els projectes que he realitzat i els coneixements que he adquirit durant la meva formaci\u00f3. Aquesta p\u00e0gina \u00e9s un reflex de la meva passi\u00f3 per la tecnologia i el meu comprom\u00eds per seguir aprenent i millorant cada dia.  Explora els meus treballs i seguiment acad\u00e8mic!","publisher":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ajaimes.inscastellbisbal.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ca"},{"@type":"Organization","@id":"https:\/\/ajaimes.inscastellbisbal.net\/#organization","name":"Adrian Jaimes","url":"https:\/\/ajaimes.inscastellbisbal.net\/","logo":{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/ajaimes.inscastellbisbal.net\/#\/schema\/logo\/image\/","url":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2025\/12\/cropped-cropped-cropped-width_550_009.webp","contentUrl":"https:\/\/ajaimes.inscastellbisbal.net\/wp-content\/uploads\/2025\/12\/cropped-cropped-cropped-width_550_009.webp","width":512,"height":512,"caption":"Adrian Jaimes"},"image":{"@id":"https:\/\/ajaimes.inscastellbisbal.net\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2206"}],"version-history":[{"count":4,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2206\/revisions"}],"predecessor-version":[{"id":3296,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2206\/revisions\/3296"}],"up":[{"embeddable":true,"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=\/wp\/v2\/pages\/2202"}],"wp:attachment":[{"href":"https:\/\/ajaimes.inscastellbisbal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}