我想查找具有特定关键字的所有网站的列表。例如,如果我搜索关键字"体育"或"足球"只需要从常见的爬网warc文件中提取相关的网站URLS,标题,描述和图像。目前我能够用下面的代码很好地读取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。我只需要与" sports"匹配的相关网址。或"足球"。如何在warc文件中搜索该关键字?请帮助我,因为我是常见的爬行新手。我还检查了很多帖子,但没有一个能够解决。
我需要抓取文章图片,如果他们有,我怎么能抓住它作为commoncrawl保存整个网页。?
答案 0 :(得分:0)
您可以使用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