爬虫自学系列教程(一)基础知识
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')

浙公网安备 33010602011771号