爬虫自学系列教程(一)基础知识

1、网络爬虫的定义:

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。大家可以理解为在网络上爬行的一只蜘蛛,互联网就比作一张蜘蛛网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。

比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。

3、爬虫流程分析

当人们去访问一个网页时,是如何进行的? 
①打开浏览器,输入要访问的网址,发起请求。 
②等待服务器返回数据,通过浏览器加载网页。 
③从网页中找到自己需要的数据(文本、图片、文件等等)。 
④保存自己需要的数据。

对于爬虫,也是类似的。它模仿人类请求网页的过程,但是又稍有不同。 
首先,对应于上面的①和②步骤,我们要利用python实现请求一个网页的功能。 
其次,对应于上面的③步骤,我们要利用python实现解析请求到的网页的功能。 
最后,对于上面的④步骤,我们要利用python实现保存数据的功能。 

4、爬虫功能实现

a、网页请求:urllib的request打开Url得到网页html文档 #Beautiful Soup是一个可以从HTML或XML文件中提取结构化数据的Python库from urllib import request  

b、获得响应

c、解析网页

 

4.1BeautifulSoup解析

4.2 正则

  这个不用安装,标准库里带的就有。 
  正则的优点:①速度快 ②能够提取有些解析器提取不到的数据 
  正则的缺点:①不够直观,很难从面向对象的角度来考虑数据的提取 ②你得会写正则表达式 
  教程就不放了,善用百度嘛。正则一般用来满足特殊需求、以及提取其他解析器提取不到的数据,正常情况下我会用bs4,bs4无法满足就用正则。 
  当然了,如果你喜欢,全部用正则解析也是没问题的,你喜欢就好= =。

4.3pyquery

4.4xpath

 

from bs4 import BeautifulSoup 

url="http://www.jianshu.com"
#构造头文件,模拟浏览器访问
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} page=request.Request(url,headers=headers) page_info=request.urlopen(page).read().decode('utf-8')
#打开Url,获取HttpResponse返回对象并读取其ResposneBody
# 将获取到的内容转换成BeautifulSoup格式,并将html.parser作为解析器

soup = BeautifulSoup(page_info, 'html.parser')

titles = soup.find_all('a', 'title')# 查找所有a标签中class='title'的语句
# 打印查找到的每一个a标签的string和文章链接
for title in titles:
        print(title.string)
        print("http://www.jianshu.com" + title.get('href'))  

#open()是读写文件的函数,with语句会自动close()已打开文件
with open(r"D:\Python\test\articles.txt","w") as file:       
#在磁盘以只写的方式打开/创建一个名为 articles 的txt文件
for title in titles:
      file.write(title.string+'\n')
      file.write("http://www.jianshu.com" + title.get('href')+'\n\n'

 

 
posted @ 2018-07-23 23:00  冷璇  阅读(170)  评论(0)    收藏  举报