首页 > 其他分享 >ecosia 搜索引擎爬虫

ecosia 搜索引擎爬虫

时间:2024-08-08 16:49:36浏览次数:11  
标签:search keyword url 爬虫 搜索引擎 print ecosia response

因为他有cloudflare五秒盾 所以需要先破五秒盾 网上找的资料已验证可用  然后替换代码里的url_base

Docker运行一个容器就可以了。启动命令为:

docker run -d \
  --name=flaresolverr \
  -p 8191:8191 \
  -e LOG_LEVEL=info \
  --restart unless-stopped \
  ghcr.io/flaresolverr/flaresolverr:latest

 

这个容器启动以后,会开启8191端口。我们通过往这个端口发送http请求,让他转发请求给目标网站,就可以绕过五秒盾。  

import requests
import json
import re

url_base = "http://12.34.56.78:8191/v1"
keyword_file = "keyword.txt"
result_file = "ecosia-result.txt"

headers = {
'Content-Type': 'application/json'
}

# 需要剔除的域名列表
excluded_domains = [
r'\b(?:\w+\.)?microsoft\.com\b',
r'\b(?:\w+\.)?youtube\.\w+\b',
r'\b(?:\w+\.)?google\.\w+\b',
r'\b(?:\w+\.)?apple\.\w+\b',
r'\b(?:\w+\.)?cnn\.com\b',
r'\b(?:\w+\.)?wikipedia\.\w+\b',
r'\b(?:\w+\.)?fifa\.com\b',
r'\b(?:\w+\.)?linkedin\.com\b',
r'\b(?:\w+\.)?amazon\.\w+\b', # amazon with any TLD
r'\b(?:\w+\.)?facebook\.\w+\b'
]

# 创建一个正则表达式以匹配需要剔除的域名
excluded_pattern = re.compile('|'.join(excluded_domains))

# 读取关键词文件
with open(keyword_file, 'r') as f:
keywords = f.readlines()

# 用于存储唯一且未被剔除的域名(保留协议)
unique_domains = set()

# 循环请求关键词和页数
for keyword in keywords:
keyword = keyword.strip() # 移除换行符
for page in range(10): # 从0到9循环页数
# 构建搜索引擎的 URL
search_url = f"https://www.ecosia.org/search?method=index&q={keyword}&p={page}"

payload = json.dumps({
"cmd": "request.get",
"url": search_url,
"maxTimeout": 60000
})

try:
response = requests.post(url_base, headers=headers, data=payload, timeout=10)

# 打印当前请求的 URL、状态码和返回的 HTML 源码
print(f"当前请求的 URL: {search_url}")
#print(f"状态码: {response.status_code}")
#print("HTML 源码:")
#print(response.text)

# 检查响应状态码
if response.status_code == 200:
# 解析 JSON 响应获取网页源代码
html_content = response.json()['solution']['response']

# 使用正则表达式匹配指定的数据
pattern = re.compile(r'<a data-test-id="result-link" tabindex="-1" href="(.*?)" target="_self" rel="noopener"')
matches = pattern.findall(html_content)
print(matches)
# 处理匹配到的数据
for match in matches:
# 提取协议和域名,去除路径和查询参数
domain = re.match(r'(https?://[^/]+)', match).group(1)
# 检查域名是否在剔除列表中
if not excluded_pattern.search(domain):
unique_domains.add(domain)

else:
print(f"请求失败,状态码:{response.status_code}")

except requests.Timeout:
print(f"请求超时: {search_url}")
except Exception as e:
print(f"请求发生异常:{e}")

# 将去重且剔除后的域名(保留协议)写入文件
with open(result_file, 'w') as f:
for domain in unique_domains:
f.write(f"{domain}\n")

print(f"结果已写入到 {result_file}")

 

标签:search,keyword,url,爬虫,搜索引擎,print,ecosia,response
From: https://www.cnblogs.com/chrales/p/18349287

相关文章

  • Python爬虫实战:实时微信推送奥运奖牌榜信息
    最近奥运会正在巴黎如火如荼地进行。为了能第一时间获得我国运动健儿的获奖情况,我给大家分享一个python爬虫项目——实时微信推送奥运奖牌榜信息。爬虫每隔5分钟抓取一次奥林匹克官网奖牌榜数据,对比上次抓取的数据,如果奖牌数量或者排名有变化,就将新的获奖信息推送到......
  • Python爬虫案例与实战:爬取源代码练习评测结果
    Python爬虫案例与实战:爬取源代码练习评测结果本章案例将介绍用Python编写程序实现简单网站的模拟登录,然后保持登录后的网页会话,并在会话中模拟网页表单提交,之后使用Requests库的高级特性爬取提交之后的返回结果。在HTTP网页中,如登录、提交和上传等操作一般通过向网页发送......
  • Python爬虫案例与实战:爬取豆瓣电影简介
    Python爬虫案例与实战:爬取豆瓣电影简介本章案例将介绍如何爬取豆瓣电影简介,以此帮助读者学习如何通过编写爬虫程序来批量地从互联网中获取信息。本案例中将借助两个第三方库----Requests库和BeautifulSoup库。通过Requests库获取相关的网页信息,通过BeautifulSoup库解析大......
  • 爬虫中XPath的应用与元素定位
    在爬虫开发中,XPath是一种强大的语言,用于在XML和HTML文档中查找信息。它允许开发者通过定义路径表达式来选取文档中的节点或节点集。在网页爬虫中,XPath常用于精确定位和提取页面上的数据。本文将详细介绍XPath的基础语法、常见用法以及如何在爬虫中利用XPath获取页面元素。......
  • python爬虫预备知识三-多进程
    python实现多进程的方法:fork、multiprocessing模块创建多进程。os.fork方法os.fork方法只适合于unix/linux系统,不支持windows系统。fork方法调用一次会返回两次,原因在于操作系统将当前进程(父进程)复制出一份进程(子进程),这两个进程几乎完全相同,fork方法分别在父进程和子进程中......
  • 爬虫简易说明
    想必大家都了解爬虫,也就是爬取网页你所需要的信息相比于网页繁多的爬虫教程,本篇主要将爬虫分为三个部分,以便你清楚,代码的功能以及使用,这三部分分别为1.获取到源代码2.根据网页中的标签特征,获取源代码你所需要的部分3.想一下如何根据页面的逻辑将一系列的网页自动化抓取接下来......
  • 爬虫系统稳定性的监控方案
    在爬虫系统的开发和运营过程中,保持其稳定性至关重要。随着数据量和任务复杂度的增加,爬虫系统面临着各种挑战,如网络波动、目标网站结构变化、数据存储压力等。因此,建立一个全面的监控体系,及时发现和处理问题,是保证爬虫系统稳定运行的关键。本文将分析和总结如何通过多种监控手段......
  • 爬虫“拥抱大模型”,有没有搞头?
    前言大模型是当前最热门的研究方向之一,千行百业加速“拥抱大模型”。如今,越来越多的研究机构和企业选择开放大模型的源代码和训练数据,促进了学术界和工业界的合作与交流,推动了技术进步,相关生态越来越好。这也使得,无论体量大小,各公司都有参与的机会,越来越多的大模型开始支持多模......
  • 手把手教你使用Python网络爬虫下载一本小说(附源码)
    大家好,我是Python进阶者。前言前几天【磐奚鸟】大佬在群里分享了一个抓取小说的代码,感觉还是蛮不错的,这里分享给大家学习。一、小说下载如果你想下载该网站上的任意一本小说的话,直接点击链接进去,如下图所示。只要将URL中的这个数字拿到就可以了,比方说这里是951,那么这个数字......
  • Java爬虫技术:从基础到进阶的全面指南
    Java爬虫技术:从基础到进阶的全面指南大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨Java爬虫技术,从基础知识开始,逐步深入到进阶技术,并通过代码示例进行详细说明。一、Java爬虫的基础爬虫是一个自动化程序,旨在访问网页并提取数据。Jav......