Python爬虫学习(1) 采集wiki百科链接

近期网上掀起爬虫热潮,题主配置的python包为3.6.1,对深网网页进行数据爬取,从本书中学习经历记载在此.
Python网络数据收集

深网,为深层网络(英语:Deep Web)的略称,又称:不可见网、隐藏网,是指互联网上那些不能被标准搜索引擎索引的非表面网络内容

深网资源

[编辑]
动态内容
未被链接内容
私有网站
Contextual Web
被限制访问内容
脚本化内容
非HTML/文本内容

深网爬取数据分为以下两步
1.生成网站地图
2.收集数据

生成网站地图思路
为了避免一个页面被采集两次,考虑链接去重,不限制爬虫的采集范围,只要遇到页面就查找所有以/wiki/开头的链接,不考虑链接的开头是否冒号

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
pages = set()
def getlinks(pageUrl):
    global pages
    html=urlopen("http://en.wikipedia.org"+pageUrl)
    bsObj=BeautifulSoup(html,'html.parser')
    for link in bsObj.findAll("a" , href=re.compile("^(/wiki/)")):
        if 'href' in link.attrs:
            if link.attrs['href'] not in pages:
                newPage=link.attrs['href']
                print(newPage)
                pages.add(newPage)
                getlinks(newPage)
getlinks("")

一开始,用getLinks处理一个空的url,是维基百科的主页,然后遍历首页上的每个链接,并检查是否已经在全局变量集合pages里面了(已经采集的所有集合)如果不在,就打印到屏幕上,并把链接加入pages集合,再用getLinks递归处理这个链接

爬取所有符合^/wiki/链接的正则表达式


Python爬虫学习(1) 采集wiki百科链接_第1张图片
Result.png

你可能感兴趣的:(Python爬虫学习(1) 采集wiki百科链接)