环境:windows10+python3.5
安装lxml解析:pip install lxml
安装requests库:pip install requests
一个简单的爬虫
import requests
r=requests.get("http://www.baidu.com")
r.encoding="utf-8"
print(r.text)
逐行解读代码:
- import requests
引入requests库,这是实现requests爬虫的基础
- requests.get()
放入url,就会返回一个response对象,包含了网页的内容、状态等信息,需要注意的是url必须带上“http://”
- 将其字符编码转换为utf-8格式『推荐这样的编码,不然很容易出现乱码的问题』
- 显示响应的文本内容,用utf-8编码后就可以显示中文字符
## 完善爬虫
```
import requests
url='http://www.baidu.com'
r = requests.get(url)
r.raise_for_status()
print(r.status_code)
r.encoding=r.apparent_encoding
print(r.text)
```
- r.raise_for_status()
用于获取状态码,如果网址错误会抛出异常的信息
- r.status_code
就是响应体内的状态码信息,可以用print函数展示出来
- r.encoding=r.apparent_encoding
将响应的编码改变为网页用的编码,如果网站内容有中文字符,那么直接使用他的编码就可以展示中文的内容了
## 带参数的爬虫
```
import requests
kv={'value':"keyword"}
ua ={'user-agent':'123'}
url="http://httpbin.org/get"
try:
r=requests.get(url,params=kv,headers=ua)
r.encoding=r.apparent_encoding
print(r.text)
except:
print('error')
```
通过分析响应的内容,就可以看到我们传入的参数了
>"args": {"value": "keyword"}
另外,我们通过设定headers,改变了useragent信息,所以我们可以看到响应的以下信息
>"User-Agent": "123"
通过设定user-agent,我们可以改变用户浏览器等信息,防止某些网站根据这个内容判断我们是否为爬虫
## 查找ip地址的小例子
beautifulsoup是一个非常方便的html解析工具
我们通过它可以解析查找我们想要的内容
>安装:pip install beautifulsoup
```
import requests
from bs4 import BeautifulSoup
ip=input()
url='http://m.ip138.com/ip.asp?ip='+ip
r=requests.get(url)
obs=BeautifulSoup(r.text,"html.parser")
q=obs.find_all('p')[-1].get_text()
a=str(q).split(':')[-1]
print(a)
```
from bs4 import BeautifulSoup先引入bs库
通过input()输入ip地址,传入url里
obs=BeautifulSoup(r.text,"html.parser")建立一个beautifulsoup的对象
q=obs.find_all('p')[-1].get_text()
找出最后的p标签并获取内容
a=str(q).split(':')[-1]
因为内容是用:分开的
我们获取内容的最后一个用:分开的内容
**我们如何从响应中解析出来自己需要的内容呢**
**这就需要学习bs、正则、xpath等内容了**
网友评论