第一章 初见网络爬虫

1.1、网络连接

# scrapetest.py
from urllib.request import urlopen # 查找Python的request模块(在urllib库里面),指导人一个urlopen函数
html = urlopen("http://pythonscraping.com/pages/page1.html").read() # urlopen用来打开并读取一个从网络获取的远程对象
print(html)
-------------------------------------------------------------------------
# 打印输出
b'<html>\n<head>\n<title>A Useful Page</title>\n</head>\n<body>\n<h1>An Interesting Title</h1>\n<div>\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n</div>\n</body>\n</html>\n'

1.2、运行BeautifulSoup

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://pythonscraping.com/pages/page1.html").read()
bs0bj = BeautifulSoup(html, 'lxml')
print(bs0bj)
print(bs0bj.h1)
-------------------------------------------------------------------------
# 打印输出
<html>
<head>
<title>A Useful Page</title>
</head>
<body>
<h1>An Interesting Title</h1>
<div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</body>
</html>

<h1>An Interesting Title</h1>

1.3、异常处理

from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
def getTitle(url):
    try:
        html = urlopen(url).read()
    except HTTPError as e:
        return None
    try:
        bsobj = BeautifulSoup(html, 'lxml')
        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("Title could not found")
else:
    print(title)
---------------------------------------------------------------------------
# 打印输出
<h1>An Interesting Title</h1>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,056评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,820评论 18 399
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,018评论 6 13
  • 在近代数学世界里,歌德巴赫猜想被誉为数学皇冠上最耀眼的宝石,数百年来,中外的数学家为了验证这一猜想,呕心沥...
    鹏程九万里阅读 4,369评论 0 3
  • 雾霾侵蚀了天空, 阳光无力穿透, 微尘遮蔽了四周, 景物迷失远路。 掩面捂鼻的行人, 来往匆匆, 川流不息的车辆,...
    随心且随缘阅读 2,695评论 0 5

友情链接更多精彩内容