<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="288875" data-post-id="288875">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="thinkingcat" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  thinkingcat
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for your work in updating your article! I’m starting to work on Crawly and will use your article as a reference.</p>
<p>Do you have any plans to make an article about downloading files? e.g., pdfs with Crawly. That would be really helpful for me and I suspect many others…</p>
<p>Sending you and your countrymen all the best! Thank you in advance!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="288875" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-288875" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="288875"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #31"></div>
  </section>
</div>
    <div class="postbit" id="289155" data-post-id="289155">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="oltarasenko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oltarasenko/120/15709_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  oltarasenko
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for kind words! It would be interesting to give it a try. Do you have some website to check in mind?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="289155" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-289155" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="289155"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #32"></div>
  </section>
</div>
    <div class="postbit" id="299003" data-post-id="299003">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="oltarasenko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oltarasenko/120/15709_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  oltarasenko
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Adding few new articles:</p>
<ol>
<li>
<p><a href="https://www.erlang-solutions.com/blog/effortlessly-extract-data-from-websites-with-crawly-yml/" class="inline-onebox" rel="noopener nofollow ugc">Effortlessly Extract Data from Websites with Crawly YML - Erlang Solutions</a></p>
</li>
<li>
<p><a href="https://medium.com/@oltarasenko/web-scraping-with-elixir-and-crawly-rendering-javascript-in-2023-b966c7ca761a" rel="noopener nofollow ugc">Web scraping with Elixir and Crawly - rendering JavaScript in 2023</a></p>
</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="299003" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-299003" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="299003"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="315488" data-post-id="315488">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kasvith" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kasvith/120/21600_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kasvith
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi,</p>
<p>One limitation is see in Crawly is inability to submit urls after a spider started, we have a list of urls stored in a db and need to crawl it by some limit</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="315488" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-315488" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="315488"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="336984" data-post-id="336984">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="RicoTrevisan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/RicoTrevisan/120/32751_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  RicoTrevisan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, I’ve been getting my head around Crawly for the past couple of days. Before that I was stubbing my toes in major skill-issues with Crawlee JS on the Apify platform.</p>
<p>My app has 20k urls that it’s tracking. Once a week I would like to ping each one to get the latest info. Am I able to pass more information with the <code>start_urls</code> or <code>start_requests</code>? I would like to pass along the db id of the related url so that it’s easier to handle it in the <code>parse_item</code> function.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="336984" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-336984" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="336984"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
    <div class="postbit" id="337113" data-post-id="337113">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="RicoTrevisan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/RicoTrevisan/120/32751_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  RicoTrevisan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m getting these debug messages. Is it a version mismatch?</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Rebuilding...
[debug] Could not classify module Elixir.Hex.API as spider: %UndefinedFunctionError{module: Hex.API, function: :module_info, arity: 1, reason: nil, message: nil}
[debug] Could not classify module Elixir.Hex.API.Auth as spider: %UndefinedFunctionError{module: Hex.API.Auth, function: :module_info, arity: 1, reason: nil, message: nil}
[debug] Could not classify module Elixir.Hex.API.Key as spider: %UndefinedFunctionError{module: Hex.API.Key, function: :module_info, arity: 1, reason: nil, message: nil}
[debug] Could not classify module Elixir.Hex.API.Key.Organization as spider: %UndefinedFunctionError{module: Hex.API.Key.Organization, function: :module_info, arity: 1, reason: nil, message: nil}
[debug] Could not classify module Elixir.Hex.API.Package as spider: %UndefinedFunctionError{module: Hex.API.Package, function: :module_info, arity: 1, reason: nil, message: nil}
[debug] Could not classify module Elixir.Hex.API.Package.Owner as spider: %UndefinedFunctionError{module: Hex.API.Package.Owner, function: :module_info, arity: 1, reason: nil, message: nil}
</code></pre>
<p>Here are my mix.exs file</p>
<pre data-code-wrap="ex"><code class="lang-ex"> defp deps do
    [
      {:bcrypt_elixir, "~&gt; 3.0"},
      {:phoenix, "~&gt; 1.7.14"},
      {:phoenix_ecto, "~&gt; 4.5"},
      {:ecto_sql, "~&gt; 3.10"},
      {:postgrex, "&gt;= 0.0.0"},
      {:phoenix_html, "~&gt; 4.1"},
      {:phoenix_live_reload, "~&gt; 1.2", only: :dev},
      # TODO bump on release to {:phoenix_live_view, "~&gt; 1.0.0"},
      {:phoenix_live_view, "~&gt; 1.0.0-rc.1", override: true},
      # {:floki, "&gt;= 0.30.0", only: :test},
      {:floki, "&gt;= 0.30.0"},
      {:phoenix_live_dashboard, "~&gt; 0.8.3"},
      {:esbuild, "~&gt; 0.8", runtime: Mix.env() == :dev},
      {:tailwind, "~&gt; 0.2", runtime: Mix.env() == :dev},
      {:heroicons,
       github: "tailwindlabs/heroicons",
       tag: "v2.1.1",
       sparse: "optimized",
       app: false,
       compile: false,
       depth: 1},
      {:swoosh, "~&gt; 1.5"},
      {:finch, "~&gt; 0.13"},
      {:telemetry_metrics, "~&gt; 1.0"},
      {:telemetry_poller, "~&gt; 1.0"},
      {:gettext, "~&gt; 0.20"},
      {:jason, "~&gt; 1.2"},
      {:dns_cluster, "~&gt; 0.1.1"},
      {:bandit, "~&gt; 1.5"},
      {:httpoison, "~&gt; 2.2"},
      {:dotenv, "~&gt; 3.1"},
      {:csv, "~&gt; 3.2"},
      {:crawly, "~&gt; 0.17.2"}
    ]
  end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="337113" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-337113" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="337113"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #36"></div>
  </section>
</div>
    <div class="postbit" id="337114" data-post-id="337114">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="oltarasenko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oltarasenko/120/15709_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  oltarasenko
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>No. Crawly scans the project files in order to find spiders inside. Those are debug messages, for files that are not spiders.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="337114" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-337114" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="337114"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #37"></div>
  </section>
</div>
    <div class="postbit" id="337115" data-post-id="337115">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="oltarasenko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oltarasenko/120/15709_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  oltarasenko
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Sorry I don’t understand that. Could you explain what you’re trying to do?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="337115" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-337115" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="337115"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #38"></div>
  </section>
</div>
    <div class="postbit" id="337124" data-post-id="337124">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="RicoTrevisan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/RicoTrevisan/120/32751_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  RicoTrevisan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for taking the time, let me try to explain.</p>
<p>I’m trying to start the spider with a bunch of items from my database and – when parsing the responses – I want to write back to those records. It would be convenient to me to be able to pass the record itself as metadata so that inside <code>parse_item/1</code> I can use that record’s information.</p>
<pre data-code-wrap="ex"><code class="lang-ex">def init do
  requests = Apps.list_apps()
  |&gt; Enum.map(fn app -&gt; 
    Crawly.Request.new("https://#{app.bubble_id}.bubbleapps.io", [], [], meta: %{app: app})
   end)

  [start_requests: requests]
end

def parse_item(response) do
  app = response.meta.app
  # do something with response.body based on response.meta.app
end
</code></pre>
<p>Originally I thought I could (ab)use the middlewares of <code>Crawly.Request.new/4</code>, but that info would not be available in the response, correct?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="337124" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-337124" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="337124"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #39"></div>
  </section>
</div>
    <div class="postbit" id="337211" data-post-id="337211">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="oltarasenko" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/oltarasenko/120/15709_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  oltarasenko
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>As far as I see it’s not possible to pass meta information from <code>init</code> into <code>parse_item</code>.</p>
<p>As I see it, you have two approaches at this point:</p>
<ol>
<li>You need to be able to identify the product by the information from the website (usually it might be SKU). Once you have this id inside your <code>parse_item</code> it will be possible to update the record.</li>
<li>As you have suggested you can use Crawly.Request object and insert meta there, for example:</li>
</ol>
<pre data-code-wrap="elixir"><code class="lang-elixir">response = Crawly.fetch("https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", [headers: [id: "a897fe39b1053632"]])

response.request
%HTTPoison.Request{
  method: :get,
  url: "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
  headers: [{"User-Agent", "Crawly Bot"}, {:id, "a897fe39b1053632"}],
  body: "",
  params: %{},
  options: []
}
```</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="337211" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/crawly-a-high-level-web-crawling-scraping-framework-for-elixir/31800/41">Post #40</a>
	                </div>
	            </div>
              <div id="likers-container-337211" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="337211"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #40"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/31800/load_more?page=5">Load more posts (5 remaining)</a>
</div></template></turbo-stream>