Python网络爬虫与信息提取01
定向掌握网络数据爬取能力和网页解析能力。
The website is API.
Requests 自动爬取HTML页面自动网络请求提交
robots.txt 网络爬虫排除标准
Beautiful Soup 解析HTML界面
Projects 实战项目
Re 正则表达式详解,提取页面关键信息
Scrapy 网络爬虫原理介绍,专业爬虫框架介绍
重视实战
常用的Python IDE工具
文本工具类IDE
集成工具类IDE
Requests是python的第三方库
pip install requests
r=requests.get(url)构造一个向服务器请求资源的request对象
r是response对象
爬取网页的通用代码框架
一组代码
网络连接有风险,异常处理很重要
r.raise_for_status()
如果不是200,产生异常requests.HTTPError
HTTP协议和requests库的方法
HTTP Hypertext Transfer Protocol 超文本传输协议
HTTP是一个基于“请求与响应”模式的,无状态的应用层协议
用户发接请求,服务器对应的响应
HTTP协议采用URL作为定位网络资源的标识
requests.request(method,url,**kwargs)
method:请求方式,对应get/put/post等7种
url:拟获取页面的url链接
**kwargs:控制访问的参数,共13个
小规模,数据量小,爬取速度不敏感 Requests库 爬取网页
中规模,数据规模较大爬取速度敏感 Scrapy库 爬取网站
大规模,搜索引擎 爬取速度关键定制开发 爬取全网
网络爬虫会有法律风险和服务器的骚扰
网络爬虫泄露隐私
网络爬虫的限制
来源审查:判断User-Agent进行限制
检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问
发布公告:Robots协议 告知哪些可以爬取,哪些不可以
import requests
url="http://item.jd.com/2967929.html"
try:
r=requests.get(url)
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失败")
为了防止网站不让python程序访问
kv={‘user-agent’:'Mozilla/5.0'}
url="http://www.amazon.cn/gp/product/B01M0L5Z3Y"
r=requests.get(url,headers=kv)
r.status_code
百度的关键词的接口:
http://www.baidu.com/s?wd=keyword
360的关键词的接口:
http://www.so.com/s?q=keyword
import requests
kv={'wd':'Python'}
r=requests.get("http://www.baidu.com/s",params=kv)
r.request.url
图片的爬取和保存
图片都是二进制来存储
IP地址归属地的查询
import requests
url="http://m,ip138.com/ip.asp?ip="
try:
r=requests.get(url+'202.204.80.112')
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text[-500:])
except:
print("爬取失败")