博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Python网络数据采集》笔记之采集
阅读量:6623 次
发布时间:2019-06-25

本文共 2520 字,大约阅读时间需要 8 分钟。

一 遍历单个域名

import randomfrom urllib.request import urlopenimport reimport datetimefrom bs4 import  BeautifulSouprandom.seed(datetime.datetime.now())def getLinks(articleurl):    html = urlopen("https://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)

二  采集整个网络

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)    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("")

 

三 收集整个网站的数据

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)    try:        print(bsobj.h1.get_text())        print(bsobj.find(id="mw-content-text").findAll("p")[0])        # print(bsobj.find(id="ca-edit").find("span").find("a").attrs['href'])    except AttributeError as e:        print(e)        print("页面少了一些属性,不用担心")    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("\n")                print(newPage)                pages.add(newPage)                getLinks(newPage)getLinks("")

 

四 解析JSON数据

import jsonfrom urllib.request import urlopendef getCountry(ipAddress):    response = urlopen("http://freegeoip.net/json/"+ipAddress).read() .decode('utf-8')    responseJson = json.loads(response)    return responseJson["country_code"]print(getCountry("50.78.253.58"))

 

五 根据文件的url下载文件

from urllib.request import urlretrievefrom urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen("http://www.pythonscraping.com")bsObj = BeautifulSoup(html)imageLocation = bsObj.find("a", {
"id": "logo"}).find("img")["src"]urlretrieve (imageLocation, "logo.jpg")

 

 

转载于:https://www.cnblogs.com/xiangshigang/p/7229295.html

你可能感兴趣的文章
面试总结-阿里巴巴
查看>>
安全宝分析DDoS攻击成主要破坏手段
查看>>
Java线程
查看>>
DockerCon2017 Euro D1:宣布同时支持Swarm和Kubernetes
查看>>
iOS中 为 iOS 建立 Travis CI 韩俊强的博客
查看>>
物联网技术在工业中的应用
查看>>
NETGEAR多功能E-S-C平台M6100数据中心功能评测
查看>>
数据恢复服务商的6个最佳实践
查看>>
看华为eLTE-IoT如何联接高效工业物联网
查看>>
Gartner公布2016年十大信息安全技术
查看>>
注意,一道重磅通知:取款方式已发生巨变!
查看>>
首届江苏省企业信息化协会年会 “智造+”and“制造家”
查看>>
吉盟珠宝:300家门店异地沟通 效率居然远超“面对面”
查看>>
使用这5款模拟器访问备选操作系统
查看>>
NETGEAR助力章丘电视台视频编辑系统存储应用
查看>>
阿里巴巴推出大数据产品经济云图
查看>>
确定数据中心建设规模需要考虑的问题
查看>>
2017:IDC市场规模将持续增长 增速放缓
查看>>
从自动驾驶到学习机器学习:解读2017科技发展的15大趋势
查看>>
SinoBBD探索"一体化"大数据创新发展
查看>>