我想查找具有特定关键字的所有网站的列表。例如,如果我搜索关键字“Sports”或“Football”,则只需从常见爬网中提取相关的网站URL,标题,描述和图像warc文件。目前,我可以用以下代码很好地读取warc文件。
import warc
f = warc.open("firsttest.warc.gz")
h = warc.WARCHeader({"WARC-Type": "response",}, defaults=True)
N = 10
name="sports"
for record in f:
url = record.header.get('warc-target-uri', 'none')
date=record.header.get("WARC-Date")
IP=record.header.get('WARC-IP-Address')
payload_di=record.header.get('WARC-Payload-Digest')
search =name in record.header
print("URL :"+str(url))
#print("date :"+str(date))
#print("IP :"+str(IP))
#print("payload_digest :"+str(payload_di))
#print("search :"+str(search))
text = record.payload.read()
#print("Text :"+str(text))
#break
#print(url)
但是它正在获取指定warc文件中的所有URL。我只需要与“体育”或“足球”匹配的相关网址。如何在Warc文件中搜索该关键字?请在此方面帮助我,因为我是普通爬网的新手。我也检查了很多帖子,但都没有解决。
我需要获取文章图片(如果有的话),如何以普通抓取方式保存整个网页?
最佳答案
您可以使用AWS Athena来查询S3上的Common Crawl Index。例如,这是我的SQL查询,用于在2019年7月索引中找到与``运动''和``足球''匹配的URL。参见本页-http://commoncrawl.org/2018/03/index-to-warc-files-and-urls-in-columnar-format/
SELECT *
FROM "ccindex"."ccindex"
WHERE crawl = 'CC-MAIN-2019-13'
AND subset = 'warc'
AND url_path like '%sports%' and url_path like '%football%'
Limit 10