最近由于竞赛需要,准备自学一下爬虫,以备不时之需,参考书籍是唐松的《Python网络爬虫从入门到实践》,上面的代码也大多来源于书上,但也会有一些改变。在学习过程中突然发现我可以写个学习笔记以作总结与反思。
原书代码来源:
原书代码
我也一起把我下载的代码的网盘链接贴上:
链接
提取码: cxta
这个系列我应该会一直保持更新(至少在学习期间)
接下来正文开始:
应用流程
获取页面
→
\rightarrow
→?解析网页
→
\rightarrow
→?储存数据
一个简单爬虫实例
获取
import requests
link="http://www.santostang.com/"
headers={'User-Agent':'Mozilla/5.0 (Windows;U;Windows NT6.1;en-US;rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r=request.get(link,headers=headers)
print(r.text)
- 首先定义link(链接)表示抓取的网址地址
- headers定义请求头的浏览器代理,进行伪装(第一个是“User-Agent”表明为浏览器代理,第二个为具体内容
- r是response对象,即请求获取网页的回复
- get函数有两个参数(第一个是网址地址,第二个是请求头)
- text为文本内容,在此是HTML格式
提取
可直接看网页源代码或利用“检查“(在网页中点击右键)以获得所需信息,包括但不限于请求头、HTML源码
import requests
from bs4 import *
link="http://www.santostang.com/"
headers={'User-Agent':'Mozilla/5.0 (Windows;U;Windows NT6.1;en-US;rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r=request.get(link,headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
title = soup.find("h1", class_="post-title").a.text.strip()
print(title)
- 获取文本后,利用BeautifulSoup对其进行解析,BeautifulSoup是专门解析HTML的库
- BeautifulSoup(r.text, “html.parser”)中r.text是需要解析的字符串,"html.parser"是使用的解析器。"html.parser"是Python自带的;另外还有”lxml“,是基于c语言的一个解析器,不过需要自己安装
- find有两个参数,第一个为节点,在此处为h1,还有p……一般h1为标题,p为段落;第二个为类名,此处为"post-title",以 HTML写出即为
<h1 class="post-title"></h1> - a元素,是超链接元素
储存
import requests
from bs4 import *
link="http://www.santostang.com/"
headers={'User-Agent':'Mozilla/5.0 (Windows;U;Windows NT6.1;en-US;rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r=request.get(link,headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
title = soup.find("h1", class_="post-title").a.text.strip()
with open("first_spider.txt", "a+") as f:
f.write(title)
把title储存到first_spider.txt中
|