用python写网络爬虫读后感_用Python 写网络爬虫

CodeSnippet 抓取代码片段

目标

抓取CodeSnippet中的代码片段

87952582_1

代码片段

分析

87952582_2

DOM结构

我们想要抓取的内容在为

li class='con-code bbor' 所以 BeautifulSoup find()方法获取到该标签然后获取其文本内容

准备

准备我们爬虫比用的两个模块

from urllib2 import urlopenfrom bs4 import BeautifulSoup

编写抓取代码

# 抓取http://www.codesnippet.cn/index.html 中的代码片段def GrapIndex(): html = 'http://www.codesnippet.cn/index.html' bsObj = BeautifulSoup(urlopen(html), 'html.parser') return bsObj.find('li', {'class':'con-code bbor'}).get_text()

当我们抓取到我们想要的数据之后接下来要做的就是把数据写到数据库里,由于我们现在抓取数据简单,所以只写文件即可!

def SaveResult(): codeFile=open('code.txt', 'a') # 追加 for list in GrapIndex(): codeFile.write(list) codeFile.close()

当我们在写文件的时候出现了以下错误,而下面这个错误的造成原因则是由于python2.7是基于ascii去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))UnicodeEncodeError: 'ascii' codec can't encode character u'u751f' in position 0: ordinal not in range(128)

分析python2.7是基于ascii去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))解决办法

import sysreload(sys)sys.setdefaultencoding('utf-8')

完整代码展示

from urllib2 import urlopenfrom bs4 import BeautifulSoupimport osimport sysreload(sys)sys.setdefaultencoding('utf-8')def GrapIndex(): html = 'http://www.codesnippet.cn/index.html' bsObj = BeautifulSoup(urlopen(html), 'html.parser') return bsObj.find('li', {'class':'con-code bbor'}).get_text()def SaveResult(): codeFile=open('code.txt', 'a') for list in GrapIndex(): codeFile.write(list) codeFile.close() if __name__ == '__main__': for i in range(0,9): SaveResult()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值