简单爬虫
项目流程:
1、确定爬取目标;入口地址,页面元素的审查元素地址,是否完整,(不完整就需要拼接)
2、分析爬取目标:url格式;数据格式;网页编码;
3、编写代码;
4、运行代码;
爬虫的架构:
1、爬虫调度器;
2、url管理器;
3、网页解析器;
4、网页下载器;
爬虫调度器:
url管理器:
功能:实现url的新增,查找,删除,更新这些功能。
实现方式:
1、set():将待爬取和已爬取的url存放在python内存分配集合中。
2、mysql:关系数据库
3、redis:缓存数据库
网页解析器:
1、正则表达式;模糊匹配一个字符串(网页)中的内容;直观,不过,不适用于复杂页面;
2、html.parser:内置模块,结构化解析
3、beautifulsoup:第三方插件库;结构化解析【用于提取html和xml中的数据:https://www.crummy.com/software/BeautifulSoup/bs4/doc/】
4、lxml:结构化解析
结构化解析:
a、创建beautifulsoup对象;
b、搜索节点find、find_all树;【节点,属性,内容】
c、访问节点内容;【节点,属性,内容】
网页下载器:
功能:下载需要url网页存储到本地文件或字符串。
实现方式:
1、urllib2:python基础模块 urllib2->urlopen
2、requests:第三方模块。模拟浏览器参数,传输给requests。再用urllib2->urlopen。
3、特殊情景处理器:
备注说明:urllib库在python2与python3中的区别
Urllib是python提供的一个用于操作url的模块。在python2中,有urllib库和urllib2库。在python3中,urllib2合并到urllib库中,我们爬取网页的时候,经常用到这个库。升级合并后,模块中包的位置变化的地方较多。以下是python2与python3中常用的关于urllib库的变化:
【python2】urllib2.bulid_opener :【python3】urllib.request.bulid_opener
【python2】cookielib.CookieJa :【python3】http.CookieJar
【python2】urllib2.Request :【python3】urllib.request.Request
输出管理:
1、新建文件;
2、写入爬取数据信息;
3、关闭文件;