看到大大的代码,发现自己的关注点出现了偏差。其实主要的内容和涉及的步骤有两方面
1、解析多个网站的内容,并存放内容;
2、解析同一网站的内容,并把其中链接到的网址内容一并解析出来并存好。
自己的关注点放在了第一个上,预建立多个网站并存于列表中,用for循环解析每个网站的内容并存于字典中(为了实现网站和内容的对应),把字典序列化到文件中,然后再提取文件内容。
而大大的代码侧重于2,把每个网站涉及的链接部分重新访问并解析至文件中,如果链接涉及的网页内容还有网址还会继续解析,做到对同一网页的持续解析。这个是自己没有想到、做到、不足的地方。
以上是大大的代码:
1、导入re、urllib、urllib2、pickle模块;解析前面作业中的网址并存储在指定文件中;
2、定义一个变量,初始化为''——空字符的字符串变量;定义下载内容的空字典downs;
3、定义函数,用于访问遇到的链接并请求访问、打开和读取内容;将读取的内容返回给函数;
4、打开指定的解析文件,按行读取文件内容为列表并对内容格式化;在最后对正则表达替换的内容利用split分离换行符"\n";
5、for循环中根据文件内容进行抽取合法链接并调用所定义的函数,访问链接读取内容且存储到相应网址的字典中;
6、将抽取的内容序列化到文件中;
7、抽取文件中的内容(反序列化)到变量。
其中使用了urllib2模块,在每天的资料查阅中大概看了下,没留意其用法也就没有想到任务中会用到。在资料的学习中任然要仔细思考,提高重视程度。
定义函数的念头也只是一闪而过并未仔细思考,其实只要可以重复利用的部分都可以利用函数来返回值。在以后的学习和编码中多思考哪些部分可以用函数去表示,并多练习。
其中urllib2.Request()表示对传递的url参数进行实例化——Request是一个类;urllib2.urlopen()表示对实例化的url对象访问服务器并打开这个网页;最后.read()对打开的对象进行读取。
可以延伸想到的是,对同一个网页有很多深度链接的网址时,一直解析下去就是爬虫的原理,先解析门户网站的内容,然后挑出链接,继续解析,很复杂,可以想到的是定义解析的函数,利用while循环一直进行下去。
网友评论