一、爬虫概念
(1)概念:网络蜘蛛、网络机器人、抓取网络数据的程序
用python程序去模拟人访问网站,模拟的 越像越好
获取数据的目的:通过有效的大量数据去分析市场走势
(2)企业获取数据的方式
1)公司自有数据
2)第三方平台购买
3)爬虫爬取数据
(3)python爬虫的优势
请求模块,解析模块丰富成熟,具有强大的scrapy框架
1)java:代码笨重,代码量很大
2)c/c++:虽然效率很高,但是代码成型很慢
3)php:对多线程,异步支持不好
(4)访问网页的流程(http和https的区别:http端口80,https端口为443,https比http更加安全,需要认证才可获得证书):
1)用户正常访问网页的流程:
确定网页的url–>通过http请求访问页面(回车)–>渲染后的网页页面
当用户正常访问一个页面时,页面会形成一个user-agent信息,里面包括了浏览器信息以及操作系统信息
2)爬虫访问网页的流程
确定网页的url–>通过http请求访问页面(通过模块发起请求)–>获取构成网页的网页源代码
2、requests请求模块爬虫步骤
(1)确定网页的url并调用get请求
(为了伪装还应添加headers请求头信息,这些信息可以到你所要爬取的网页中找)
import requests
#get请求
#res包含网页的所有请求,跟你正常在浏览器中搜索url所返回的信息一样,不过我们需要进一步处理信息才能看到我们想要的东西
res=requests.get(url,headers={},params={})#对url地址发起请求并获取响应
tips:
url:请求的域名
headers:请求携带的请求头信息,主要用于爬虫伪装,避免被网页捕获为爬虫而导致请求被拦截
data/params:请求携带的参数信息,可以为翻页获取数据提供帮助(url不可省略,其他两个可以省略)
(2)设置解码格式,获取网页源代码
res=requests.get(url)#对url地址发起请求并获取响应信息
res.encoding="utf-8"#将得到的 相应内容编码为utf-8
html=res.text #解析得到的响应文本内容
print(html)#此时输出的是网页源代码
(3)多页抓取
#构建多页抓取的循环
for page in range(1,6):
pn=(page-1)*10
#构建请求参数字典
params={"wd":word,
"pn":str(pn)#添加换页的参数pn
}
res = requests.get(url, headers=headers, params=params)
res.encoding = "utf-8"
html = res.text
print(html)
print(res.url) # 查看是否请求被屏蔽
tips:浏览你所需要爬取的网页,点击下一页,看看url如何变化,此时可以构造出对应的url,达到翻页爬取的效果。
注意:有时需要在请求参数params中拼接页数,而有时直接在url中拼接页数,注意观察翻页时地址栏的变化就行。
如何解析爬取的数据,获得 我们想要爬取的数据,见下一篇文章