三、开始采集

第三章:开始采集
1、遍历单个域名。采集a链接里的东西
获取维基百科网站的任何页面并提取页面链接的 Python 代码
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen(“http://en.wikipedia.org/wiki/Kevin_Bacon”)
bsObj = BeautifulSoup(html)
for link in bsObj.findAll(“a”):
if ‘href’ in link.attrs:
print(link.attrs[‘href’])

这样写更安全,运用正则表达式和随机数种子
from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import re
random.seed(datetime.datetime.now())
def getLinks(articleUrl):
html = urlopen(“http://en.wikipedia.org”+articleUrl)
bsObj = BeautifulSoup(html)
return bsObj.find(“div”, {“id”:“bodyContent”}).findAll(“a”,
href=re.compile("^(/wiki/)((?!😃.)*$"))
links = getLinks("/wiki/Kevin_Bacon")
while len(links) > 0:
newArticle = links[random.randint(0, len(links)-1)].attrs[“href”]
print(newArticle)
links = getLinks(newArticle)

2、采集整个网站
系统地把整个网站按目录分类,或者要搜索网站上的每一个页面。那就得采集整个网站,那是一种非常耗费内存资源的过程,尤其是处理大型网站时,最合适的工具就是用一个数据库来储存采集的资源。
爬取来的进行去重也是非常重要的一个功能。用in 进行判断即可

生成网站地图
收集数据

3、通过互联网采集
实现任何跨站的数据分析,你只要构建出可以从互联网上无数的网页里解析和储存数据的爬虫就可以了。
建立的网络爬虫也是顺着链接从一个页面跳到另一个页面,描绘出一张网络地图。
在写代码前问自己几个问题
我要收集哪些数据?这些数据可以通过采集几个已经确定的网站(永远是最简单的做法)完成吗?或者我的爬虫需要发现那些我可能不知道的网站吗?
• 当我的爬虫到了某个网站,它是立即顺着下一个出站链接跳到一个新网站,还是在网站
上呆一会儿,深入采集网站的内容?
• 有没有我不想采集的一类网站?我对非英文网站的内容感兴趣吗?
• 如果我的网络爬虫引起了某个网站网管的怀疑,我如何避免法律责任?

在写程序是最好自己画一个流程图,这样防止自己的爬虫编的很杂乱

4、用Scrapy采集
写网络爬虫的挑战之一是你经常需要不断地重复一些简单任务:找出页面上的所有链接,区分内链与外链,跳转到新的页面。
Scrapy 就是一个帮你大幅度降低网页链接查找和识别工作复杂度的 Python 库,它可以让你轻松地采集一个或多个域名的信息。
Scrapy 是处理网络数据采集相关问题的利器。它可以自动收集所有 URL,然后和指定的规
则进行比较;确保所有的 URL 是唯一的;根据需求对相关的 URL 进行标准化;以及到更
深层的页面中递归查找。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值