今天,我们来学习爬虫。什么是爬虫呢?
简单来讲,爬虫是指使用一定的手段自动抓取网页上的内容。它是搜索引擎的核心技术之一。
爬虫程序是我们用来自动抓取网页内容的手段。这里我们将讲解如何利用python来编写爬虫程序。
要想抓取网页上的内容,首先我们要认识网页的构成。
认识网页的构成
网页通常由三部分构成,一个网页就等于一个HTML文档:
1. HTML:结构部分,区分每个部分具体是做什么用的,比如标题、正文等,相当于卧室、厨房等
2. CSS:<div class="">,样式部分,每个部分长啥样,地板什么颜色,墙壁什么颜色
3. JavaScript:<script>:功能部分,房间里的电器。在爬虫中利用较少
那么,爬取一个网页,要做什么?
第一步:获取网页的内容
为了获取网页的内容,我们就需要知道服务器与本地的交换机制。
我们在浏览器输入一个链接实际上是向网站所在的服务器发出一个请求(request),服务器在收到这个请求后就会把相应的内容返回(response)给我们。
请求的方法主要有两种:get和post。我们在点击一个按钮或链接时使用的是get,发微博则是一个post行为。我们使用一个爬虫去抓取网页内容就是在模拟这些方法去获取网页内容。
我们在request时不仅仅是发送了url的信息,实际上包括你使用的设备等信息也发送过去了。我们平时使用手机打开网页时,服务器因为知道我们使用的设备而以适合手机的方式呈现页面就是这个原理。
服务器以response的形式返回给我们信息。爬虫就是要解析网页返回给我们的response信息(html文件)。
import requests
url="http://www.tripadvisor.cn/Attractions-g294217-Activities-Hong_Kong.html"
wb_data=requests.get(url)
第二步:使用BeautifulSoup解析网页
from bs4 import BeautifulSoup
soup=BeautifulSoup(wb_data.text,'lxml')
beautifulsoup有两个参数,前面是待解析的文件,后面是解析文件的库(按照什么规则解析)。
第三步:描述元素在网页中所处位置
CSS Selector:描述元素在网页中所处位置,按照元素的位置和样式去选取元素
titles=soup.select('div.property_title > a[target="_blank"]')
imgs=soup.select("img[width=160]")
cates=soup.select("div.p13n_reasoning_v2")
第四步:从标签中获取想要的信息,并将信息装进数据容器中,方便查询
for title, img, cate in zip(titles,imgs,cates):
data={
"title":title.get_text(),
"img":img.get('src'),
"cate":list(cate.stripped_strings)
}
运行结果:
深入学习:
1. 如何爬取多个网页?
2.需要登录怎么办?
3. 如何爬取移动设备网页内容?
参考资料: