Fix: remove duplicate author-bio includes, add author images, move inline styles
- Remove author-bio.php and article-footer.php duplicate inclusions from inside related article cards across 17 articles (was rendering 4x per page) - Create /assets/images/authors/ with SVG avatars for all 7 named authors - Move inline <style> block out of author-bio.php into main.css
@@ -4568,3 +4568,112 @@ body { font-size: 17px; }
|
||||
.article-cta .cta-actions { width: 100%; }
|
||||
.article-cta .btn-primary, .article-cta .btn-secondary { text-align: center; flex: 1; }
|
||||
}
|
||||
|
||||
|
||||
/* === Author Bio Component (moved from inline, Feb 2026) ===*/
|
||||
|
||||
.author-bio {
|
||||
display: flex;
|
||||
gap: 20px;
|
||||
padding: 24px;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
border-radius: 12px;
|
||||
margin: 40px 0;
|
||||
border-left: 4px solid #179e83;
|
||||
}
|
||||
|
||||
.author-avatar img {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
border: 3px solid #179e83;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.author-header {
|
||||
font-size: 0.85rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
color: #144784;
|
||||
margin: 0 0 8px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.author-name {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
margin: 0 0 4px 0;
|
||||
}
|
||||
|
||||
.author-role {
|
||||
font-size: 0.95rem;
|
||||
color: #666;
|
||||
margin: 0 0 12px 0;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.author-description {
|
||||
font-size: 0.95rem;
|
||||
color: #444;
|
||||
line-height: 1.6;
|
||||
margin: 0 0 16px 0;
|
||||
}
|
||||
|
||||
.author-expertise {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.expertise-label {
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.expertise-tag {
|
||||
font-size: 0.8rem;
|
||||
padding: 4px 10px;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 16px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.author-social .linkedin-link {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
color: #0077b5;
|
||||
text-decoration: none;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 500;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
.author-social .linkedin-link:hover {
|
||||
color: #005885;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.author-bio {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.author-avatar {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.author-expertise {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
5
assets/images/authors/david-martinez.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
||||
<circle cx="40" cy="40" r="40" fill="#144784"/>
|
||||
<circle cx="40" cy="30" r="14" fill="rgba(255,255,255,0.9)"/>
|
||||
<ellipse cx="40" cy="68" rx="22" ry="18" fill="rgba(255,255,255,0.9)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
5
assets/images/authors/emma-richardson.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
||||
<circle cx="40" cy="40" r="40" fill="#144784"/>
|
||||
<circle cx="40" cy="30" r="14" fill="rgba(255,255,255,0.9)"/>
|
||||
<ellipse cx="40" cy="68" rx="22" ry="18" fill="rgba(255,255,255,0.9)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
5
assets/images/authors/james-wilson.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
||||
<circle cx="40" cy="40" r="40" fill="#144784"/>
|
||||
<circle cx="40" cy="30" r="14" fill="rgba(255,255,255,0.9)"/>
|
||||
<ellipse cx="40" cy="68" rx="22" ry="18" fill="rgba(255,255,255,0.9)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
5
assets/images/authors/michael-thompson.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
||||
<circle cx="40" cy="40" r="40" fill="#144784"/>
|
||||
<circle cx="40" cy="30" r="14" fill="rgba(255,255,255,0.9)"/>
|
||||
<ellipse cx="40" cy="68" rx="22" ry="18" fill="rgba(255,255,255,0.9)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
5
assets/images/authors/rachel-singh.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
||||
<circle cx="40" cy="40" r="40" fill="#144784"/>
|
||||
<circle cx="40" cy="30" r="14" fill="rgba(255,255,255,0.9)"/>
|
||||
<ellipse cx="40" cy="68" rx="22" ry="18" fill="rgba(255,255,255,0.9)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
5
assets/images/authors/sarah-chen.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
||||
<circle cx="40" cy="40" r="40" fill="#144784"/>
|
||||
<circle cx="40" cy="30" r="14" fill="rgba(255,255,255,0.9)"/>
|
||||
<ellipse cx="40" cy="68" rx="22" ry="18" fill="rgba(255,255,255,0.9)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
5
assets/images/authors/team-avatar.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
||||
<circle cx="40" cy="40" r="40" fill="#144784"/>
|
||||
<circle cx="40" cy="30" r="14" fill="rgba(255,255,255,0.9)"/>
|
||||
<ellipse cx="40" cy="68" rx="22" ry="18" fill="rgba(255,255,255,0.9)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 279 B |
@@ -1182,33 +1182,13 @@ $read_time = 12;
|
||||
<article class="related-card">
|
||||
<h3><a href="predictive-analytics-customer-churn.php">Predictive Analytics for Customer Churn Prevention</a></h3>
|
||||
<p>Learn how to build and implement predictive models that identify at-risk customers before they leave.</p>
|
||||
<span class="read-time">10 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">10 min read</span> <article class="related-card">
|
||||
<h3><a href="../categories/business-intelligence.php">More Business Intelligence Articles</a></h3>
|
||||
<p>Explore our complete collection of business intelligence guides, best practices, and case studies.</p>
|
||||
<span class="read-time">Browse category</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">Browse category</span> <article class="related-card">
|
||||
<h3><a href="/case-studies/">Dashboard Success Stories</a></h3>
|
||||
<p>See real-world examples of successful dashboard implementations across different industries.</p>
|
||||
<span class="read-time">Multiple studies</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">Multiple studies</span> </div>
|
||||
</section>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -433,31 +433,13 @@ class ProxyManager:
|
||||
<article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="javascript-heavy-sites-scraping.php">Scraping JavaScript-Heavy Sites: Advanced Techniques</a></h4>
|
||||
<span class="read-time">6 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">6 min read</span> <article class="related-card">
|
||||
<span class="category">Data Analytics</span>
|
||||
<h4><a href="data-quality-validation-pipelines.php">Building Robust Data Quality Validation Pipelines</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">9 min read</span> <article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="data-automation-strategies-uk-businesses.php">Data Automation Strategies for UK Businesses</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">9 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -685,39 +685,19 @@ $read_time = 8;
|
||||
<div class="article-footer">
|
||||
<span class="read-time">9 min read</span>
|
||||
<a href="data-quality-validation-pipelines.php" class="read-more">Read →</a>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="article-card">
|
||||
</div> <article class="article-card">
|
||||
<h3><a href="business-intelligence-dashboard-design.php">Designing Effective Business Intelligence Dashboards</a></h3>
|
||||
<p>Create compelling, actionable BI dashboards that drive decision-making and business value.</p>
|
||||
<div class="article-footer">
|
||||
<span class="read-time">11 min read</span>
|
||||
<a href="business-intelligence-dashboard-design.php" class="read-more">Read →</a>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="article-card">
|
||||
</div> <article class="article-card">
|
||||
<h3><a href="financial-services-data-transformation.php">Financial Services Data Transformation Success Story</a></h3>
|
||||
<p>How a leading UK investment firm automated their market data collection and reduced analysis time by 75%.</p>
|
||||
<div class="article-footer">
|
||||
<span class="read-time">7 min read</span>
|
||||
<a href="financial-services-data-transformation.php" class="read-more">Read →</a>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div> </div>
|
||||
|
||||
<div class="category-links">
|
||||
<a href="../categories/data-analytics.php" class="btn btn-secondary">More Data Analytics Articles</a>
|
||||
|
||||
@@ -174,33 +174,13 @@ $og_image = "https://ukdataservices.co.uk/assets/images/icon-automation.svg";
|
||||
<article class="related-card">
|
||||
<h3><a href="/blog/articles/competitive-intelligence-roi-metrics.php">Measuring ROI in Competitive Intelligence: A UK Business Guide</a></h3>
|
||||
<p>Learn how to quantify the value of competitive intelligence initiatives and demonstrate clear ROI to stakeholders.</p>
|
||||
<span class="category-tag">Data Analytics</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="category-tag">Data Analytics</span> <article class="related-card">
|
||||
<h3><a href="/blog/articles/web-scraping-compliance-uk-guide.php">Web Scraping Compliance in the UK: Legal Framework and Best Practices</a></h3>
|
||||
<p>Navigate the complex legal landscape of web scraping in the UK with our comprehensive compliance guide.</p>
|
||||
<span class="category-tag">Web Scraping</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="category-tag">Web Scraping</span> <article class="related-card">
|
||||
<h3><a href="/blog/articles/javascript-heavy-sites-scraping.php">Advanced Techniques for Scraping JavaScript-Heavy Websites</a></h3>
|
||||
<p>Master the technical challenges of extracting data from modern, dynamic websites using proven methodologies.</p>
|
||||
<span class="category-tag">Web Scraping</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="category-tag">Web Scraping</span> </div>
|
||||
</section>
|
||||
|
||||
<!-- CTA Section -->
|
||||
|
||||
@@ -371,31 +371,13 @@ $read_time = 9;
|
||||
<article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="data-automation-strategies-uk-businesses.php">Data Automation Strategies for UK Businesses</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">9 min read</span> <article class="related-card">
|
||||
<span class="category">Business Intelligence</span>
|
||||
<h4><a href="competitive-intelligence-roi-metrics.php">Measuring ROI from Competitive Intelligence Programmes</a></h4>
|
||||
<span class="read-time">8 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">8 min read</span> <article class="related-card">
|
||||
<span class="category">Compliance</span>
|
||||
<h4><a href="web-scraping-compliance-uk-guide.php">Complete Guide to Web Scraping Compliance in the UK</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">12 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -352,31 +352,13 @@ $read_time = 7;
|
||||
<article class="related-card">
|
||||
<span class="category">Data Analytics</span>
|
||||
<h4><a href="data-quality-validation-pipelines.php">Building Robust Data Quality Validation Pipelines</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">9 min read</span> <article class="related-card">
|
||||
<span class="category">Business Intelligence</span>
|
||||
<h4><a href="competitive-intelligence-roi-metrics.php">Measuring ROI from Competitive Intelligence Programmes</a></h4>
|
||||
<span class="read-time">8 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">8 min read</span> <article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="data-automation-strategies-uk-businesses.php">Data Automation Strategies for UK Businesses</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">9 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -383,31 +383,13 @@ END;
|
||||
<article class="related-card">
|
||||
<span class="category">Compliance</span>
|
||||
<h4><a href="web-scraping-compliance-uk-guide.php">Complete Guide to Web Scraping Compliance in the UK</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<span class="category">Data Analytics</span>
|
||||
<h4><a href="data-quality-validation-pipelines.php">Building Robust Data Quality Validation Pipelines</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">9 min read</span> <article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="data-automation-strategies-uk-businesses.php">Data Automation Strategies for UK Businesses</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">9 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -602,31 +602,13 @@ def scrape_with_captcha_logging(url):
|
||||
<article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="web-scraping-compliance-uk-guide.php">Complete Guide to Web Scraping Compliance in the UK</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="selenium-vs-playwright-comparison.php">Selenium vs Playwright 2026: Speed Tests & Honest Comparison</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">9 min read</span> <article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="python-scrapy-enterprise-guide.php">Python Scrapy Enterprise Guide: Scaling Web Scraping Operations</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">12 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -421,33 +421,13 @@ await page.goto(url);
|
||||
<article class="related-card">
|
||||
<h3><a href="web-scraping-compliance-uk-guide.php">Complete Guide to Web Scraping Compliance in the UK</a></h3>
|
||||
<p>Ensure your JavaScript scraping activities remain fully compliant with UK data protection laws.</p>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<h3><a href="selenium-vs-playwright-comparison.php">Selenium vs Playwright: Choose the Right Tool</a></h3>
|
||||
<p>Comprehensive comparison of browser automation tools with performance benchmarks.</p>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<h3><a href="../categories/web-scraping.php">More Web Scraping Articles</a></h3>
|
||||
<p>Explore our complete collection of web scraping guides and tutorials.</p>
|
||||
<span class="read-time">Browse category</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">Browse category</span> </div>
|
||||
</section>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -1608,33 +1608,13 @@ $read_time = 14;
|
||||
<article class="related-card">
|
||||
<h3><a href="business-intelligence-dashboard-design.php">Business Intelligence Dashboard Design Best Practices</a></h3>
|
||||
<p>Create effective dashboards that transform churn predictions into actionable business insights.</p>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<h3><a href="../categories/business-intelligence.php">More Business Intelligence Articles</a></h3>
|
||||
<p>Explore our complete collection of business intelligence and predictive analytics resources.</p>
|
||||
<span class="read-time">Browse category</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">Browse category</span> <article class="related-card">
|
||||
<h3><a href="/case-studies/">Predictive Analytics Success Stories</a></h3>
|
||||
<p>See real-world examples of successful churn prediction implementations across industries.</p>
|
||||
<span class="read-time">Multiple studies</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">Multiple studies</span> </div>
|
||||
</section>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -773,31 +773,13 @@ spec:
|
||||
<article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="javascript-heavy-sites-scraping.php">Scraping JavaScript-Heavy Sites: Advanced Techniques</a></h4>
|
||||
<span class="read-time">6 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">6 min read</span> <article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="cloud-native-scraping-architecture.php">Cloud-Native Scraping Architecture for Enterprise Scale</a></h4>
|
||||
<span class="read-time">11 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">11 min read</span> <article class="related-card">
|
||||
<span class="category">Compliance</span>
|
||||
<h4><a href="web-scraping-compliance-uk-guide.php">Complete Guide to Web Scraping Compliance in the UK</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">12 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -252,31 +252,13 @@ $read_time = 10;
|
||||
<article class="related-card">
|
||||
<span class="category">Business Intelligence</span>
|
||||
<h4><a href="competitive-intelligence-roi-metrics.php">Measuring ROI from Competitive Intelligence Programmes</a></h4>
|
||||
<span class="read-time">8 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">8 min read</span> <article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="data-automation-strategies-uk-businesses.php">Data Automation Strategies for UK Businesses</a></h4>
|
||||
<span class="read-time">9 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">9 min read</span> <article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="javascript-heavy-sites-scraping.php">Scraping JavaScript-Heavy Sites: Advanced Techniques</a></h4>
|
||||
<span class="read-time">6 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">6 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -471,31 +471,13 @@ run_scraper()
|
||||
<article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="handling-captchas-scraping">How to Handle CAPTCHAs in Web Scraping: 7 Methods That Work</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<span class="category">Technology</span>
|
||||
<h4><a href="cloud-native-scraping-architecture.php">Cloud-Native Scraping Architecture for Enterprise Scale</a></h4>
|
||||
<span class="read-time">11 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">11 min read</span> <article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="web-scraping-compliance-uk-guide">Is Web Scraping Legal in the UK? GDPR & DPA 2018 Guide</a></h4>
|
||||
<span class="read-time">6 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">6 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -1421,33 +1421,13 @@ ORDER BY predicted_clv DESC;</code></pre>
|
||||
<article class="related-card">
|
||||
<h3><a href="business-intelligence-dashboard-design.php">BI Dashboard Design Best Practices</a></h3>
|
||||
<p>Transform your SQL analytics into compelling visual dashboards for business users.</p>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<h3><a href="../categories/business-intelligence.php">More Business Intelligence Articles</a></h3>
|
||||
<p>Explore our complete collection of business intelligence and data analytics resources.</p>
|
||||
<span class="read-time">Browse category</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="related-card">
|
||||
<span class="read-time">Browse category</span> <article class="related-card">
|
||||
<h3><a href="/case-studies/">SQL Analytics Success Stories</a></h3>
|
||||
<p>See real-world examples of advanced SQL implementations across different industries.</p>
|
||||
<span class="read-time">Multiple studies</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">Multiple studies</span> </div>
|
||||
</section>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -355,31 +355,13 @@ $read_time = 8;
|
||||
<article class="related-card">
|
||||
<span class="category">Industry Insights</span>
|
||||
<h4><a href="retail-price-monitoring-strategies.php">Advanced Price Monitoring Strategies for UK Retailers</a></h4>
|
||||
<span class="read-time">10 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">10 min read</span> <article class="related-card">
|
||||
<span class="category">Business Intelligence</span>
|
||||
<h4><a href="competitive-intelligence-roi-metrics.php">Measuring ROI from Competitive Intelligence Programmes</a></h4>
|
||||
<span class="read-time">8 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">8 min read</span> <article class="related-card">
|
||||
<span class="category">Case Studies</span>
|
||||
<h4><a href="financial-services-data-transformation.php">Financial Services Data Transformation Success Story</a></h4>
|
||||
<span class="read-time">7 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">7 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -480,39 +480,19 @@ $read_time = 12;
|
||||
<div class="article-footer">
|
||||
<span class="read-time">6 min read</span>
|
||||
<a href="gdpr-data-minimisation-practices.php" class="read-more">Read →</a>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="article-card">
|
||||
</div> <article class="article-card">
|
||||
<h3><a href="handling-captchas-scraping">How to Handle CAPTCHAs in Web Scraping: 7 Methods That Work</a></h3>
|
||||
<p>Learn 7 proven methods to handle reCAPTCHA, hCaptcha and Turnstile ethically while web scraping.</p>
|
||||
<div class="article-footer">
|
||||
<span class="read-time">8 min read</span>
|
||||
<a href="handling-captchas-scraping" class="read-more">Read →</a>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="article-card">
|
||||
</div> <article class="article-card">
|
||||
<h3><a href="data-protection-impact-assessments">DPIA Guide: Data Protection Impact Assessments for the UK</a></h3>
|
||||
<p>Step-by-step guide to conducting DPIAs for your data processing activities, with free template.</p>
|
||||
<div class="article-footer">
|
||||
<span class="read-time">10 min read</span>
|
||||
<a href="data-protection-impact-assessments" class="read-more">Read →</a>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div> </div>
|
||||
|
||||
<div class="category-links">
|
||||
<a href="../categories/compliance.php" class="btn btn-secondary">More Legal & Compliance Articles</a>
|
||||
|
||||
@@ -760,31 +760,13 @@ monitor.print_report()
|
||||
<article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="handling-captchas-scraping.php">Handling CAPTCHAs in Web Scraping: Complete Guide</a></h4>
|
||||
<span class="read-time">8 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">8 min read</span> <article class="related-card">
|
||||
<span class="category">Web Scraping</span>
|
||||
<h4><a href="python-scrapy-enterprise-guide.php">Python Scrapy Enterprise Guide: Scaling Web Scraping Operations</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
<article class="related-card">
|
||||
<span class="read-time">12 min read</span> <article class="related-card">
|
||||
<span class="category">Compliance</span>
|
||||
<h4><a href="web-scraping-compliance-uk-guide.php">Complete Guide to Web Scraping Compliance in the UK</a></h4>
|
||||
<span class="read-time">12 min read</span>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/article-footer.php'); ?>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<span class="read-time">12 min read</span> </div>
|
||||
</aside>
|
||||
</div>
|
||||
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/author-bio.php'); ?>
|
||||
|
||||
@@ -148,110 +148,3 @@ $author_info = isset($authors[$author_name]) ? $authors[$author_name] : $authors
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.author-bio {
|
||||
display: flex;
|
||||
gap: 20px;
|
||||
padding: 24px;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
border-radius: 12px;
|
||||
margin: 40px 0;
|
||||
border-left: 4px solid #179e83;
|
||||
}
|
||||
|
||||
.author-avatar img {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
border: 3px solid #179e83;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.author-header {
|
||||
font-size: 0.85rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
color: #144784;
|
||||
margin: 0 0 8px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.author-name {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
margin: 0 0 4px 0;
|
||||
}
|
||||
|
||||
.author-role {
|
||||
font-size: 0.95rem;
|
||||
color: #666;
|
||||
margin: 0 0 12px 0;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.author-description {
|
||||
font-size: 0.95rem;
|
||||
color: #444;
|
||||
line-height: 1.6;
|
||||
margin: 0 0 16px 0;
|
||||
}
|
||||
|
||||
.author-expertise {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.expertise-label {
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.expertise-tag {
|
||||
font-size: 0.8rem;
|
||||
padding: 4px 10px;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 16px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.author-social .linkedin-link {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
color: #0077b5;
|
||||
text-decoration: none;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 500;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
.author-social .linkedin-link:hover {
|
||||
color: #005885;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.author-bio {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.author-avatar {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.author-expertise {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||