python之爬虫
1、requests库
https://requests.readthedocs.io/en/master/
安装requests库,pip install requests
python2.7.5 安装pip
1 先安装setuptools
liunx : wget https://files.pythonhosted.org/packages/b5/96/af1686ea8c1e503f4a81223d4a3410e7587fd52df03083de24161d0df7d4/setuptools-46.1.3.zip
将下载后的tar文件解压,用CMD模式进入到解压后的文件所在的目录执行命令:python setup.py install
2 安装pip
liunx : wget https://files.pythonhosted.org/packages/d1/05/059c78cd5d740d2299266ffa15514dad6692d4694df571bf168e2cdd98fb/pip-20.1.tar.gz
将下载后的tar文件解压,用CMD模式进入到解压后的文件所在的目录执行命令:python setup.py install
>>> import requests
>>> r = requests.get('http://www.baidu.com')
>>> r.status_code 获取编码状态,返回200是OK的
200
>>> r.encoding='utf-8' 更改编码样式
>>> r.text 打印内容
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.status_code 200 >>> r.headers['content-type'] 'application/json; charset=utf8' >>> r.encoding 'utf-8' >>> r.text '{"type":"User"...' >>> r.json() {'private_gists': 419, 'total_private_repos': 77, ...}
r是response返回的结果
>>> import requests
>>> r=requests.get('http://www.baidu.com')
>>> r.encoding
'ISO-8859-1'
>>> r.status_code
200
>>> r.apparent_encoding
'utf-8'
>>> r.text 这样会乱码
>>> r.encoding='utf-8'
>>> r.text 这样就不乱码了
get是获取所有信息,head是获取概要信息
request.get中patram和**k同request.request一样
13个参数同request.request一样
Disallow:/?*:不允许网络爬虫访问以?开始的路径
Robot协议:通过基本语法告知所有爬虫, 内部哪些资源可被爬虫,哪些不被爬虫,这个语法就是user-agent和Disallow
User-agent代表哪些爬虫,*代表所有爬虫;
爬取京东某商品的信息
https://item.jd.com/2967929.html
import requests url = "https://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("爬取失败")
>>> r.request.headers 查看我们发给京东的头部是啥
亚马逊:通过headers字段模拟浏览器向亚马逊提供requests求情
我们可以更新一个headrs,这样就有权利访问了,
百度360搜索并返回结果
搜索关键词Python
爬取并下载
C:\Users\Administrator>pip install beautifulsoup4
http://python123.io/ws/demo.html
>>> import requests
>>> r=requests.get('http://python123.io/ws/demo.html')
>>> r.text
>>> damo=r.text
>>> from bs4 import BeautifulSoup 从bs4库引入了一个 BeautifulSoup类
>>> soup=BeautifulSoup(damo,"html.parser") html.parser解析dame的html解析
>>> print(soup.prettify())
head\title\p\b\a\body等都属于标签