python学习之旅
虽然我以后更多的可能要与硬件打交道,但是python还是很有意思的,作为爱学习的我,必须要学习学习,为了督促自己,以后每天更新博客,展示一下自己学习的知识。嘻嘻嘻嘻
网络爬虫入门知识
requests库入门
- requests.requests()
- requests.get()——最常使用的的方法
- requests.head()——对于比较大的链接,用这个方法获得其资源概要
- requests.post()
- requests.put()
- requests.patch()
- requests.delete()
需要掌握的爬取网页的代码框架
try:
r=requests.get(url,timeout=30)
r.raise_for_status()——如果返回的状态码不时200,就返回异常
r.encoding =r.apparent_encoding
return r.text
except:
return "产生异常"
网络连接有风险,处理风险按需要谨慎
网络爬虫引发的问题
规模 | 主要功能 |
---|---|
爬取网页,玩转网页 | 小规模,数据量小,爬取速度不敏感,requests库 |
爬取网站,爬取系列网站 | 数据规模比较大,速度很敏感,scrapy库 |
爬取全网 | 大规模搜索引擎,速度是关键——定制开发的 |
小规模的爬虫占据的爬虫数量的90%,爬虫对于网站的运行者而言形成骚扰,实际的网络对于网络爬虫有一定的限制。
Robots协议
作用:网站告知爬虫那些压面可以抓取,那些不行
京东的robots协议:京东
如下所示:
User-agent: *
Disallow: /?* ——不允许访问的
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider ——以上的四种爬虫不允许爬取京东任何资源
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
以及还有百度的Robots协议
Robots协议一定是放在网站的根目录下
对亚马逊网站的信息爬取
以下是访问亚马逊网页的全部代码
import requests
url="........"
try:
kv={'user-agent':'Mozilla/5.0'}
r.requests(url,headers=kv)
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text[:1000])
except:
print("获取失败")
解释:有些网站限制爬虫的访问,这时候要更改头部,把requests标识更改为mozilla浏览器访问
百度,360关键字搜索
百度的搜索关键词接口:http://www.baidu.com/s?wd=keyword
360的关键词接口:
http://www.so.com/s?q=keyword
以下是获取百度关键字搜索的相关代码
import requests
keyword='python'
try:
kv={'wd':keyword}
r=requests.get("http://www.baidu.com/s",params=kv)
print(r.requests.url)
r.raise_for_status()
print(len(r.text))
except:
print("获取失败")
360搜索的全代码
import requests
keyword="python"
try:
kv={'wd':keyword}
r=requests.get("http://www.so.com/s",params=kv)
print(r.requests=.url)
r.raise_for_status()
print(len(r.text))
except:
print("获取失败")
网络图片的爬取和存储
网络上常见图片连接的格式:
http://www.example.com/picture.jpg
r.content表示的是二进制形式
以下是图片爬取的全代码:
import requests
import os//为什么呢
url="https://b-ssl.duitang.com/uploads/item/201409/10/20140910212044_HuSke.thumb.700_0.png"
root="D://abc.jpg"
path=root
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.aparent_encoding
print(r.text[-500:])
except:
print("爬取失败")
关于使用BeautifulSoup库,只需要使用两行代码
from bs4 import BeautifulSoup
soup=BeautifulSoup('<p>data</p>','html.parser')