python网络数据采集实例-在一个网站上随机地从一个链接跳到另一个链接&采集整个网站
2017-10-08 10:54
761 查看
from urllib.request import urlopen from bs4 import BeautifulSoup import datetime import random import re #用系统当前时间生成一个随机数生成器,保证在每次程序运行的时候,维基百科词条的选择都是一个全新的随机路径。 random.seed(datetime.datetime.now()) #定义函数,返回词条a链接 def getLinks(articleUrl): html = urlopen("http://en.wikipedia.org"+articleUrl) bsObj = BeautifulSoup(html,"html.parser") return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) links = getLinks("/wiki/Kevin_Bacon") '''用一个循环,从页面中随机找一个词条链接标签并抽href 属性,打印这个页面链接,再把这个链接传入getLinks 函数, 重新获取新的链接列表。''' while len(links) > 0: newArticle = links[random.randint(0, len(links)-1)].attrs["href"] print(newArticle) links = getLinks(newArticle)
采集整个网站:
收集页面标题、正文的第一个段落,以及编辑页面的链接这些信息。
from urllib.request import urlopenfrom bs4 import BeautifulSoupimport repages=set()def getLinks(pageUrl):#定义全局变量global pageshtml=urlopen("https://en.wikipedia.org"+pageUrl)bsObj=BeautifulSoup(html,"html.parser")try:print(bsObj.h1.get_text())print(bsObj.find(id="mw-content-text").findAll("p")[0])print(bsObj.find(id="ca-edit").finf("span").find("a").attrs["href"])except AttributeError:print("页面缺少一些属性")for link in bsObj.findAll("a",href=re.compile("^(/wiki/)")):# 遇到新的界面newPage=link.attrs['href']print("------------\n"+newPage)pages.add(newPage)getLinks(newPage)getLinks("")1、所有的标题(所有页面上,不论是词条页面、编辑历史页面还是其他页面)都是在h1 → span 标签里,而且页面上只有一个h1 标签。
2、所有的正文文字都在div#bodyContent 标签里。获取第一段文字,用div#mw-content-text → p 更好(只选择第一段的标签)。
3、编辑链接只出现在词条页面上。如果有编辑链接,都位于li#ca-edit 标签的li#caedit→ span → a 里面。
相关文章推荐
- 网络数据采集——收集整个网站
- 记录使用jQuery和Python抓取采集数据的一个实例
- O'Reilly精品图书推荐:Python网络数据采集
- python网络数据采集学习范例—利用CSS爬取网站特定标签,BeautifulSoup函数介绍及子标签
- Python网络数据采集13:用爬虫测试网站
- java多线程网络数据采集  1
- SEO优化之百度反向链接肯定是衡量一个网站权重的一个数据
- KingDZ 变菜鸟,每日一个C#小实例之---C#判断网络是否链接
- 利用原始套接字实现一个简单的采集网络数据包
- <数据挖掘><python><一个小的推荐系统示例>
- Python网络数据采集学习笔记1
- 从一个网站中取属于自己的数据到另一个网站中
- SQL SERVER 数据库 怎么从一个服务器一个表中把数据插入到另一个服务器中的一个表内(纯复制)
- ASP网站数据采集程序制作:一个采集入库生成本地文件的几个FUCTION(可用来生成HTML静态网页)
- 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数.输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,
- python keras (一个超好用的神经网络框架)的使用以及实例
- python网络编程之读取网站根目录实例
- Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
- ASP网站数据采集程序制作:一个采集入库生成本地文件的几个FUCTION(可用来生成HTML静态网页)
- SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间