python数据采集框架_20190715《Python网络数据采集》第 1 章

《Python网络数据采集》7月8号-7月10号,这三天将该书精读一遍,脑海中有了一个爬虫大体框架后,对于后续学习将更加有全局感。

此前,曾试验看视频学习,但是一个视频基本2小时,全部拿下需要30多个视频,如此看来每天学习一个视频时间都是非常吃力的,且都属于被动输入,尤其是在早上学习视频容易犯困。

故此,及时调整学习策略,采用 “电子书+廖雪峰网页教程+实操+Google+咨询程序员+每日总结归纳”的主动学习模式,如此更加高效,更加容易把控进度!

学习爬虫,一者兴趣,致力于借此兴趣驱动力掌握编程思维,进而让自己有能够将想法做成产品的的技能;二者,为了一个近在眼前的爬虫商业化机遇,更希望借此为自己增加一个收入来源。

1. 爬虫常见得异常及处理方法,用一个简单得爬虫代码解释,核心知识点:

(1)异常一:网页在服务器上不存在(或者获取页面时,出现错误)。该异常发生时,程序会返回HTTP错误,如“404 Page Not Found” "500 Internet Server Error"等。

(2)异常二:服务器不存在(即,链接打不开,或者URL链接写错了),这时,urlopen会返回一个None对象。

Ps:有的时候,网页已经从服务器成功获取,如果网页上的内容并非完全是我们期望的那样,也会出现异常。

1 from urllib.request importurlopen

2 from bs4 importBeautifulSoup

3

4 try:

5 html = urlopen("http://pythonscraping.com/pages/page1.html")

6 # print(html.read())

7 # 检测:网页在服务器上是否存在(或者获取页面时是否出现错误)

8 exceptHTTPError as e:

9 print(e)

10 else:

11 bsobj =BeautifulSoup(html.read())

12 # 检测:服务器是否存在(就是说链接能否打开,或者是URL链接写错了)

13 if html isNone:

14 print("URL is not found")

15 else:

16 print(bsobj.h1)

17 # print(bsobj.title)

1 # 以上代码更改为检测异常更全面、可读性更强的代码,如下:

2 from urllib.request importurlopen

3 from bs4 importBeautifulSoup

4

5 defgetTitle(url):

6 try:

7 html =urlopen(url)

8 exceptHTTPError as e:

9 returnNone

10 try:

11 bsobj =BeautifulSoup(html.read())

12 title =bsobj.body.h1

13 exceptAttributeError as e:

14 return

15 returntitle

16

17 title1 = getTitle("http://pythonscraping.com/pages/page1.html")

18 if title1 ==None:

19 print("Title could not be found")

20 else:

21 print(title1)

该部分代码执行时,出现报错:

indentationerror: unexpected indent process finished with exit code 1

Google发现,Tag和Space不能混合使用。原始第五行,def被tab缩进,后删除该tab缩进,问题解决。该问题具体原因,仍需要仔细查明!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值