英文不好只能看中文版的。邮电出版社翻译的真很烂。

以上是吐槽,以下是正文。

书中用的pthon 3.X版本,建议安装python3.4以上的版本,低版本的没有自带pip安装插件会比较麻烦。

下载地址:https://www.python.org/downloads/windows/

1.1注意乌鸦处提示,如果用2.x的版本后面写urllib.request处替换成urllib或者urllib2.

1.2.1 安装包命令一定不要写错 pip install beatifulsoup4

1.2.2 用html.read() 读取网页中ccs样式里的h1标签的内容

#! /usr/bin/env python
#coding=utf-8
from urllib.request import urlopen
#3.*版本是这样的,2.*去掉后面.request,参照1.1乌鸦处提示
from bs4 import BeautifulSoup
html = urlopen("http://www.pythonscraping.com/pages/page1.html")
bsObj=BeautifulSoup(html.read())
print(bsObj.h1.get_text())

1.2.3设置报错

网页不存在 except HTTPError as e:

服务器不存在 if html is None

属性错误: except AttributeError as e:

如何创建函数,返回报错。

#! /usr/bin/env python
#coding=utf-8
from urllib2 import urlopen
from bs4 import BeautifulSoup from urllib2 import HTTPError def getTitle(url):
try:
html =urlopen(url)
except HTTPError as e:
#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/pageee1.html")
#这里指定一个无法找到的页面
if title == None:
print("title could not be found")
else:
print(title)

2.2根据标签属性抽取文字

namelist=bsObj.findAll("span",{"class":"green"}

#这里需要主要的是findAll中的A必须要大写。

get_text()是起到删除标签作用,可以将其添加print(bsObj.h1.get_text())中,运行删除h1标签

2.2.1 find和findAll的差别,可用limit限制findAll的寻找层数,具体差别出了limit限制完全没看明白

2.2.2 beautifulsoup的对象

普通对象 bsObj

标签Tag对象 bsObj.div.h1

NAvigablesString对像  标签里面的文字

Comment对象 查找注释文字<!--***-->

2.2.3导航树--子、兄弟、父标签

子标签(children)和后代标签(descendant)

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj=BeautifulSoup(html)
#比1.2中省略了.read()
for child in bsObj.find("table",{"id":"giftList"}).children:
#.children是子对象,.descendants是所有后代
print (child)

兄弟标签

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj=BeautifulSoup(html)
for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings:
#.tr提取标题行
#.next_siblings提取除标题行外的数据
#.previous_siblings提取最后一行外的数据
#上面两个去掉s只返回单个标签
print (sibling)

父标签

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj=BeautifulSoup(html)
print (bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text())
#翻译下来就是打印图片img1.jpg父亲的上级兄弟的删除标签结果。

2.3正则表达式。

此处延伸扩展就能单独一篇这里不多介绍,站长工具里面有正则表达式工具

2.4正则表达式和Beautifulsoup

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj=BeautifulSoup(html)
import re
images=bsObj.findAll("img",{"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")})
for image in images:
print(image["src"])

2.5获取属性

介绍的太简单我也看不明白

2.6Lambda表达式

暂时没有接触过

2.7采集还有很多其他的之前用urllibe和urllibe2爬过微博

学习python网络数据采集笔记-1、2章的更多相关文章

  1. 20190715《Python网络数据采集》第 1 章

    <Python网络数据采集>7月8号-7月10号,这三天将该书精读一遍,脑海中有了一个爬虫大体框架后,对于后续学习将更加有全局感. 此前,曾试验看视频学习,但是一个视频基本2小时,全部拿下 ...

  2. 笔记之Python网络数据采集

    笔记之Python网络数据采集 非原创即采集 一念清净, 烈焰成池, 一念觉醒, 方登彼岸 网络数据采集, 无非就是写一个自动化程序向网络服务器请求数据, 再对数据进行解析, 提取需要的信息 通常, ...

  3. 学习爬虫:《Python网络数据采集》中英文PDF+代码

    适合爬虫入门的书籍<Python网络数据采集>,采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导.第一部分重点介绍网络数据采集的基本原理 ...

  4. Python网络数据采集PDF

    Python网络数据采集(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/16c4GjoAL_uKzdGPjG47S4Q 提取码:febb 复制这段内容后打开百度网盘手 ...

  5. Python网络数据采集PDF高清完整版免费下载|百度云盘

    百度云盘:Python网络数据采集PDF高清完整版免费下载 提取码:1vc5   内容简介 本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导.第 ...

  6. Python网络数据采集7-单元测试与Selenium自动化测试

    Python网络数据采集7-单元测试与Selenium自动化测试 单元测试 Python中使用内置库unittest可完成单元测试.只要继承unittest.TestCase类,就可以实现下面的功能. ...

  7. Python网络数据采集6-隐含输入字段

    Python网络数据采集6-隐含输入字段 selenium的get_cookies可以轻松获取所有cookie. from pprint import pprint from selenium imp ...

  8. Python网络数据采集4-POST提交与Cookie的处理

    Python网络数据采集4-POST提交与Cookie的处理 POST提交 之前访问页面都是用的get提交方式,有些网页需要登录才能访问,此时需要提交参数.虽然在一些网页,get方式也能提交参.比如h ...

  9. Python网络数据采集3-数据存到CSV以及MySql

    Python网络数据采集3-数据存到CSV以及MySql 先热热身,下载某个页面的所有图片. import requests from bs4 import BeautifulSoup headers ...

随机推荐

  1. cmd 控制台 提示:请求的操作须要提升!

    cmd 控制台 提示:请求的操作须要提升! 在windows7中想用route add 或相关route等命令须要以管理员身份执行,假设windows7以下没有以管理身份执行那么加入路由时候route ...

  2. 【转】C++中的虚函数的实现

    转自:http://blog.csdn.net/haoel/article/details/1948051 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(V ...

  3. 文件和目录之chdir、fchdir和getcwd函数

    每个进程都有一个当前工作目录,此目录是搜索所有相对路径名的起点(不以斜杠开始的路径名为相对路径名).当用户登录到UNIX系统时,其当前工作目录通常是口令文件(/etc/passwd)中该用户登录项的第 ...

  4. java注解研究

    注解作用 常见的作用有以下几种: 生成文档.这是最常见的,也是java 最早提供的注解.常用的有@see @param @return @author等. 跟踪代码依赖性,实现替代配置文件功能.比较常 ...

  5. oracle表锁住 解锁办法

    第一种方法: 用系统账户如sys      as  SYSDBA 登录进去 1.查看数据库锁,诊断锁的来源及类型:  select object_id,session_id,locked_mode f ...

  6. 【邮件】imap与pop3的区别

    文:铁乐猫 2015 10月14日 今天替一位在外出差的用户安装和设置完foxmail用于收发邮件,到下午被告知对方用foxmail发完邮件后,在网页上登录邮箱后并没有看到在foxmail中" ...

  7. bash调试执行

    bash -x 调试执行 bash -n 测试语法

  8. 发布GeoServer后预览提示下载wms文件

    这是因为发布的图层有中文所导致的,只需修改tomcat的server.xml文件 <Connector port="8080" protocol="HTTP/1.1 ...

  9. MySQL基本查询语句

    创建一张表 create table user ( id ) not null, name ) not null, birthDate date not null, gender ) not null ...

  10. Excel操作之 导出生成多个sheet页面

    首先需要下载一个NPOI.dll 下载地址:http://download.csdn.net/detail/president810/9503038 using System; using Syste ...