-
确定目标--->分析目标(URL格式,数据格式,网页编码)--->编写代码
分析目标:制定抓取网站数据的策略;
URL格式:用来限定我们要抓取的页面的范围,如果范围不进行限定的话就会抓取去多不相关的网页,造成资源浪费。
数据格式:分析每个词条页面的标题等,数据所在的标签的格式。
网页编码:在代码解析器上指定网页的编码格式,然后才能进行正确的解析。
词条页面URL不是一个完整的URL,所以需要在代码中补全;
数据格式在<h1>标签中,
查看全部 -
访问节点信息
查看全部 -
搜索节点(find_all,find)
find_all(name,attrs,string)[名称、属性、文字]
对于它的名称,属性和文字,都可传入一个正则表达式来匹配
'class'后加了'_'的原因:python的关键字有class,bs为了避免冲突,加了一个'_'
查看全部 -
创建BeautifulSoup对象
查看全部 -
Beautiful Soup语法
查看全部 -
网页解析器——Beautiful Soup
查看全部 -
结构化解析——DOM
查看全部 -
网页解析器类型:
1正则表达式,使用字符串的模糊匹配,不适用于复杂的
2Python自带模块(http.parser)
3主要使用,为第三方插件(Beautiful Soup)
4第三方插件(lxml)
查看全部 -
网页解析器
查看全部 -
Python爬虫URL管理器的实现方式(三种)
(一)将已爬取或和待爬取的URL集合存放在内存中,用Python语言的话,可以将这两个URL集合放在set()数据结构中,Python的set结构可以自动去除重复的内容,
(二)将URL存放在关系数据库中,建立一个表,有两个字段(url,is_crawled),is_crawled字段标志这个URL的状态是待爬取还是已爬取。
(三)将URL存放在一个缓存数据库中,比如redis,本身支持set的结构,所以我们可以将待爬取的和已爬取的URL存放在set中。
查看全部 -
def output_html(self): # 看似没有问题,并且在控制台输出的html也不会出现中文乱码,但是创建的html文件中 # 使用open方法的一个参数,名为encoding=” “,加入encoding=”utf-8”即可 fout = open('output.html', 'w', encoding="utf-8") fout.write("<html>") fout.write("<head><meta charset=\"utf-8\"></head>") fout.write("<body>") fout.write("<table>") # ascii for data in self.datas: fout.write("<tr>") fout.write("<td>%s</td>" % data['url']) fout.write("<td>%s</td>" % data['title']) fout.write("<td>%s</td>" % data['summary']) fout.write("</tr>") print(data['summary']) fout.write("</table>") fout.write("</body>") fout.write("</html>") fout.close()
查看全部 -
添加特殊情况处理器实例
查看全部 -
特殊场景。
查看全部 -
urllib2下载网页方法2:data、http header
查看全部 -
网页下载器-urllib2(python 3 有不同)
查看全部
举报