Python网络数据采集

飞到花上   采集花粉   通过处理 数据清洗 存储编程可用的数据javascript

urlib  BeautifulSoup  lxml  Scrapy  PdfMiner  Requests  Selenium   NLTK   Pillow  unittset  PySocksphp

知名网站的API  MySQL数据库  OpenRefine数据分析工具html

PhanthomJS无头浏览器java

Tor代理服务器等内容python

-----------git

关于多进程 multiprocessinggithub

      并发  concurrencyweb

      集群 cluster正则表达式

等高性能采集的很少数据库

国内外关于网络数据保护的法律都在不断地制定与完善 

做者介绍了美国与网络数据采集相关的法律与典型案例

呼吁网络爬虫严格控制网络数据采集的速度  下降 被采集网站服务的负担  法律问题

语言是思想的解释器   数据是语言的载体

bug是产品声明中的挑战 好产品 是不断面对bug而且打败bug的结果

--------

天天6点起床

magic魔术

网络数据采集  web  Scraping 

巫术 wizardry

先写一个简单的网络爬虫并不难 就是先收集数据 再显示到 命令行或者存储到数据库里

github

 

---------

https://github.com/REMitchell/python-scraping

-------------

screen scraping

data mining

web harvesting

-------------

bots 机器人

--------

若是你上网的惟一方式是用浏览器 

那么你失去了不少可能

twitter 或者维基百科的API  发现一个API同时提供了 不一样的数据类型

------

市场预测 机器语言翻译 医疗诊断领域 对新闻网站 文章 健康论坛的数据进行采集

-----

Jonathan Harris 

Sep  Kamvar

在2006年发起的咱们感受挺好

wefeelfine 

http://wefeelfine.org/

项目

从大量英文博客中抓取许多

i feel

i am feeling开头的语句

描述这个世界天天 每分钟的 感受

-------

Bill Lubanovic 写的《Python语言及其应用》

Jessica  McKellar 的教学视频

http://shop.oreilly.com/product/110000448.do

-----------

http://www.safaribooksonline.com

---------

域名切换   信息收集  以及 信息存储功能的爬虫

1990年的Nexus浏览器

浏览器自己就是一个程序  能够分解成不少基本组件能够重用 重写

-----------------------------------

被分红一些子模块

urllib.request

urllib.parse

urllib.error

库 里面有模块

----------

python的标准库 

BeautifulSoup库的名字 取自 刘易斯 卡罗尔 的《爱丽丝梦游仙境》里的同名诗歌

化平淡为神奇

----

有病没药  天灾

-------

BS4  

BeautifulSoup

-----------

sudo  apt-get install  python-bs4

mac

sudo  easy_install  pip

 

pip

pip  install beautifulsoup4

------------

prettify---修饰

-----

bsObj.html.body.h1

bsObj.body.h1

bsObj.html.h1

-----------------

万一 爬着爬着 跌机了咋办

-------------

若是服务器不存在的话  urlopen会返回一个None对象

Beautiful对象找不到的时候返回的也是None

标签下面的标签没有的 话

就会

AttributeError错误

---

import   urllib.request
from urllib.error import HTTPError
from bs4 import BeautifulSoup
def getTitle(url):
try:
html=urllib.request.urlopen(html)
except HTTPError as e:
return None
try:
bsObj=BeautifulSoup(html.read())
title=bsObj.body.h1
except AttributeError as e:
return None
return title
title=getTitle("http://www.pythonscraping.com/pages/page1.html")
if title==None:
print("题目不能是空")
else:
print(title)
-----------
米开朗其罗
如何完成《大卫》
很简单 只要用锤子 把石头上不像大卫的地方敲掉就行了
=----------
页面解析难题(Gordian Knot)的时候
当网站管理员对网站稍做修改以后 这行代码就会失效 甚至可能会毁掉整个网络爬虫
-------------
寻找 打印此页 的连接
看看网站有没有HTML样式更好的移动版
把本身的请求头设置成处于移动设备的状态 而后接受网站移动版


寻找隐藏在Javascript文件里面的信息
我曾经把一个网站上 的街道地址 整理成格式整洁的数组时候
查看过内嵌谷歌的javascript文件


网站标题也能够从网页的URL连接里获取



  若是你找的信息只是存在一个网站上  别的地方没有

 

三思然后行写代码

--------------

Lambda表达式 

本质上就是一个函数

能够做为其余函数的 变量使用

一个函数不是定义成f(x,y)

而是定义成 f(g(x),y)

或者f(g(x),h(x))的形式

----

BeautifulSoup容许咱们把特定函数类型看成findAll函数的参数

惟一限制条件是

这些函数必须把一个标签做为参数且返回结果是布尔类型

BeautifulSoup用这个函数来评估它遇到的每一个标签对象

最后评估结果为真的标签保留 将其余标签删除

soup.findAll(lambda tag:len(tag.attrs)==2)

这行代码会找出下面的标签:

 

<div  class="body"  id="content"></div>

<span style="color:red" class="title"></span>

-----

lambda 表达式选择标签  将是regular  expression的完美替代方案

-------

除了使用BeautifulSoup  (Python里最受欢迎的HTML解析库之一)

lxml  (http://lxml.de/)  解析 HTML  XML文档

很是底层的实现  大部分源码用c写的

学习曲线越陡峭  你能够越快学习它

处理HTML文档时很快

-----------

HTML parser Python自带的解析库

不用安装 

https://docs.python.org/3/library/html.parser.html

----------

返回的是Python字典对象

能够获取和操做这些属性

myImgTag.attrs["src]

----------------

本质是一种递归

使用网络爬虫你必须谨慎地考虑须要消耗多少网络流量

---

还要尽力思考能不能让采集目标服务器负载更低一些

---------

维基百科六度分割理论

-----

文 贝肯(kevin  Bacon)

六度分隔值游戏

两个游戏中  都是把两个不相关的 主题

维基百科里是词条之间的连接

凯文 贝肯是用出如今同一部电影里的演员来 连接

用一个总数不超过六条的主题连接起来 包括原来的两个主题

http://oracleofbacon.org/index.php

------------

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'])
----------



维基百科的每一个页面充满了 侧边栏 页眉 页脚 连接链接到 分类页面 对话页面 其余不包含词条的页面的连接:为了判断维基百科的内链是否连接到 一个词条他写了一个很大的过滤函数超过100行代码不幸的是在项目启动的时候 没有花时间去比较词条连接和其余连接的差别---URL连接不包含分号在id是bodyContent的div标签里URL连接都是以/wiki开头----------http://regexpal.com/网站 上在线测试正则表达式-----------不一样邮箱服务器的邮箱地址的具体规则不尽相同--------邮箱的正则表达式---------[A-Za-z0-9\._+]+@[A-Za-z]+\.(com|org|edu|net)----------咱们后面要创建的爬虫也是顺着连接从一个页面跳转到另外一个页面描绘出一张网络地图此次 再也不忽略外链 跟着外链跳转爬虫是否是能够记录咱们浏览过的没一个页面上的信息相比以前咱们作的 单个域名采集互联网采集要难的多不一样网站的布局迥然不一样意味着咱们必需要寻找的信息以及查找方式上都极具灵活性-------------芝麻街http://www.sesamestreet.org------------我要收集哪些数据?这些数据能够经过采集几个已经肯定的 网站 完成吗?个人爬虫须要发现那些我可能不知道的网站吗--个人爬虫到了某个站 是当即顺着出站连接跳到一个新站仍是在网站上待会深刻采集网站的内容有没有我不想采集的一类网站对非英文网站的 内容感兴趣吗个人行为引发了某个网站网管的怀疑我如何避免法律责任------写网络爬虫的挑战之一 是你常常要重复一些简单人物 找出网页上的全部连接 区份内链 外链 跳到新的页面-------http://scrapy.org/dowmload
相关文章
相关标签/搜索