当前位置: 首页 > 工具软件 > Common Crawl > 使用案例 >

CommonCrawlDocumentDownload踩坑记录

唐恺
2023-12-01

commoncrawl是一个开放的数据平台,它预先爬取了数年的互联网信息(包括网页、文件等),研究人员可直接通过其维护的数据直接爬取,而不用自行探索爬取的渠道。该网站提供了示例代码列表供参考。该网站主要可用于大数据分析,而对于需要针对特定网站进行爬取的爬虫则没有帮助。

本文记录在使用示例代码CommonCrawlDocumentDownload来下载特定类型文档时踩的坑。

CommonCrawlDocumentDownload访问commoncrawl整理好的数据库,支持的文件类型如下。

    ".xls",
    ".xlsx",
    ".xlsm",
    ".xltx",
    ".xlsb",
    ".doc",
    ".docx",
    ".dotx",
    ".docm",
    ".ooxml",
    ".ppt",
    ".pptx",
    ".pptm",
    ".ppsm",
    ".ppsx",
    ".thmx",
    ".msg",
    ".pub",
    ".vsd",
    ".vss",
    ".vst",
    ".vsw",
    ".vsdm",
    ".vsdx",
    ".vssm",
    ".vssx",
    ".vstm",
    ".vstx",
    ".ole2",
    ".adm",
    ".dat", 

坑1.gradle访问问题

熟悉Android编程的人在使用gradle构建项目时往往会修改代理从而下载特定版本的gradle。该项目采用gradle构建,使用在cmd输入特定命令的方式编译运行项目。

./gradlew check

通过对批处理文件进行审计,发现调用java进行下载gradle的操作。

"%JAVA_EXE%"  %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

然后会由于无法访问而报错。
设置系统代理,失败
增加-D选项设置代理,失败
尝试通过proxifier强制为java设置代理的方式进行处理,失败

解决方案:

使用IntelliJ或AndroidStudio等设置代理后进行编译过程,下载并构建好需要的文件。

坑2.javax.net.ssl.SSLException: java.net.SocketException: Connection reset

使用中调用以下命令构建具有下载信息的文件。

./gradlew lookupURLs

然后使用以下命令根据构建好的文件进行文档下载。

./gradlew downloadDocuments

在下载的过程中有时会出现javax.net.ssl.SSLException: java.net.SocketException: Connection reset错误。

解决方案:

使用管理员权限运行cmd。

总结

本次使用半小时共记录了3992条文件信息,并没有完整的运行完成文件信息收集步骤。
单条文件信息示例如下:

{"url": "http://akademie-wien.at/wp-content/uploads/2017/10/Initiative-Politisch.Neu_.Denken-Prinzipien.docx", "mime": "text/html", "mime-detected": "text/html", "status": "302", "digest": "XD3SRJP326UAWIYBJ24ZQYSWKUS77XCR", "length": "688", "offset": "448410", "filename": "crawl-data/CC-MAIN-2018-43/segments/1539583516003.73/crawldiagnostics/CC-MAIN-20181023023542-20181023045042-00541.warc.gz"}

在下载步骤中使用27m41s实际下载了3341个文件,但由于commoncrawl官方限制,下载的文件大小最大为1024KB,约60个文档因此下载不全,无法使用。
在下载的文件中出现了2578个0KB文件,这些文件也无效。
还有一些文档由于其他原因无法打开,故本次下载的有效文档约707个
该方法虽然效率略低,但是强在自动化,值得尝试。
关于其他示例代码请自行探索。

 类似资料: