近期网上掀起爬虫热潮,题主配置的python包为3.6.1,对深网网页进行数据爬取,从本书中学习经历记载在此.
Python网络数据收集
深网,为深层网络(英语:Deep Web)的略称,又称:不可见网、隐藏网,是指互联网上那些不能被标准搜索引擎索引的非表面网络内容
<h1><strong>深网资源</strong></h1>[编辑]
动态内容
未被链接内容
私有网站
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/链接的正则表达式