Requests 与 Beautiful Soup 入门
Requests 与 Beautiful Soup 入门
一 安装
安装 Requests
pip3 install requests
安装 beautifulsoup
pip3 install beautifulsoup4
pip3 install lxml
pip3 install html5lib
二 请求网页
使用requests.get请求网页
r = requests.get("http://lt.cjdby.net/thread-2375411-1-1.html")
r.text是网页的内容
可以打印出来看看,不过这里我们就不打印了,比较长
把这个内容传到beautifulsoup中
soup = BeautifulSoup(r.text, 'html.parser')
soup是一个 BeautifulSoup 对象
这样我们就可以轻松获取网页中所需要的东西了
例如
print(soup.prettify())
按照标准缩进格式结构输出
soup.title.name
获取网页头的名字
其中有一些有趣的东西比如img
print(soup.find_all('img'))
这样我们便获取到了全部带img标签的
想要获取其中的图片地址就这样
for link in soup.find_all('img'):
print(link.get('src'))
如果想全部下载则这样
if img.startswith('http'):
r = requests.get(img, stream=True)
with open('pics/' + str(i) + '.jpg', 'wb') as fd:
for chunk in r.iter_content():
fd.write(chunk)
我们下载了一些图片到本地的文件夹pics下
一个最简单最基础的爬虫就做完了
但是这个缺少控制单元,其中有不少错误,下次再改进
三 完整代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
r = requests.get("http://lt.cjdby.net/thread-2375411-1-1.html")
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.prettify())
print(soup.title)
print(soup.title.name)
print(soup.find_all('img'))
for i, link in enumerate(soup.find_all('img')):
# print(link.get('src'))
img = link.get('src')
print(img)
if img.startswith('http'):
r = requests.get(img, stream=True)
with open('pics/' + str(i) + '.jpg', 'wb') as fd:
for chunk in r.iter_content():
fd.write(chunk)