我想查找具有特定关键字的所有网站的列表。例如,如果我搜索关键字“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

python-2.7 - 常见的抓取关键字查询-LMLPHP

08-08 02:14