python网络数据采集实例-在一个网站上随机地从一个链接跳到另一个链接&采集整个网站
来源:互联网 发布:简单bbs论坛源码php 编辑:程序博客网 时间:2024/06/06 23:50
from urllib.request import urlopenfrom bs4 import BeautifulSoupimport datetimeimport randomimport 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 pages html=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 里面。
阅读全文
0 0
- python网络数据采集实例-在一个网站上随机地从一个链接跳到另一个链接&采集整个网站
- python网络爬虫-采集整个网站
- Python数据采集2--链接去重
- 传递整个链接到网站程序
- 网络神采 网站数据采集软件
- 从网站结构到链接
- HttpWebRequest 采集网站数据
- linux怎么将一个文件夹链接到另一个文件夹上
- 链接采集
- 在一个Portlet中链接到另一个Portlet
- 在一个Portlet中链接到另一个Portlet
- python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- Python网络数据采集
- 2017 JUST Programming Contest 3.0 B. Linear Algebra Test
- 笔试_java基础综合题
- 什么是XML?
- 模拟SPI实现和调试流程
- Python 数据批量插入 MySQL
- python网络数据采集实例-在一个网站上随机地从一个链接跳到另一个链接&采集整个网站
- .XML
- 机器学习十大算法之扫盲
- 1007. Maximum Subsequence Sum (25)
- URL
- 泛型
- Android--超强面试总结
- 1.第一个程序
- 双节假期延长攻略