python爬虫之requests+BeautifulSoup+pymongo
python模块安装
打开IED,新建项目,点击下方的终端,如图:
输入如下命令,其中pymongo是与mongoDB数据库连接的模块
pip install requests
pip install BeautifulSoup4
pip install pymongo
mongoDB数据库
这里我们使用docker容器技术,先在服务器上拉取mongo镜像
sudo docker pull mongo
以守护态形式运行容器,并将端口暴露给宿主机
sudo docker run -p 27018:27017 -d mongo
进入容器
sudo docker exec -it 容器ID /bin/bash
查看mongo数据库是否运行,如何进入数据库里面,说明数据已经启动
mongo
退出容器
Ctrl+p Ctrl+Q
安装mongoUI客户端
点击这里安装
客户端连接mongo数据库,如图,输入服务器的ip地址与端口
爬取车辆配件信息并存到mongo数据库
打开IDE,项目中新建一个car.py文件,输入如下代码:
# coding:utf-8
# 爬取车辆配件信息
import requests
from bs4 import BeautifulSoup
import pymongo
# 爬取网址
url = 'http://www.qichepeijian.com/pj.html'
# 用户代理
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}
proxies = { "http": "http://172.17.30.100:50080", "https": "http://172.17.30.100:50080"}
r = requests.get(url, headers=headers, proxies=proxies)
# 编码
r.encoding = 'gb2312'
# html解析
soup = BeautifulSoup(r.content, 'html.parser')
# 定义数据库
client = pymongo.MongoClient('172.17.30.232', 27018)
# 创建数据库
car = client['car']
# 创建车辆配件表单
car_fittings = car['car_fittings']
# 获取车辆配件名称与链接
for tag in soup.find_all('div', class_='chexi_left_fonta'):
for a in tag.find_all('a'):
print url+a.get('href'),a.get_text()
data = {
'name': a.get_text(),
'url': url+a.get('href')
}
# 数据库添加数据
car.car_fittings.insert_one(data)
数据库查看数据,如图:
总结
- 大多数网站可以通过设置User-Agent,实现数据爬取,但有些网站会通过检测你的ip访问频率,进行拉黑屏蔽处理,你可以通过设置代理来混淆服务器。
- 这种方式只能抓取的静态网页上的数据,如果想要通过执行js脚本获取动态数据,就需要用到selenium和PhantomJS了,我们下篇再讲。