(一)表层网络信息获取(Python引擎爬虫)

项目整体的流程在初步分为三步:

1,表层网络信息获取

2,暗网信息爬取(第一个难点,目前已经解决)

3,信息相似度匹配,机器学习分析。

表层网络信息获取原本打算使用百度、google、bing等搜索引擎。暗网大多数内容为英文,而英文搜索又是百度搜索的短板,遂放弃百度。

google需要翻墙,bing的搜索又不够简洁。

于是找到了了元搜索引擎。

“元搜索引擎又称多搜索引擎,通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的(甚至是同时利用若干个)搜索引擎来实现检索操作,是对分布于网络的多种检索工具的全局控制机制”——百度百科

简而言之,元搜索引擎可以集百家之长,给用户更大的选择。我选择的元搜索引擎为searX,该搜索引擎已在github上开源,强烈推荐,甚至可以搭建自己的searX元搜索引擎。

使用Python requests和lxml下载了searX上的链接,存入本地。

核心代码如下:

    if not os.path.exists(word):
    	os.mkdir(word)
    print '[+]searching '+word
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, compress',
        'Accept-Language': 'en-us;q=0.5,en;q=0.3',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'
        }
    for pagecount in range(1, 11):
        url = 'https://searx.me/?q='+word+'&categories=general&pageno=' + str(pagecount)+'&time_range=None'
        html = requests.get(url=url,headers=headers)
        print '[+]'+url
        path = etree.HTML(html.content)
        flag=11
        if pagecount==1:
            flag=22
        for i in range(1,flag):
            tempword = ""
            for j in path.xpath('.//*[@id="main_results"]/div[%d]/h4/a//text()'%i):
                tempword+=j
            pageurl = path.xpath(".//*[@id='main_results']/div[%d]/h4/a/@href"%i)

github传送门:
https://github.com/gongpx20069/searX