爬虫基础
准备阶段:
数据库:mongodb,redis,mysql
mongodb安装注意(切记):
1. 关闭防火墙
2. 关闭 mongodb compress
新版的mongodb(4.0)已经自动安装成为服务, 安装完成后,在浏览器输入地址 localhost:27017,
出现如下提示,表示安装成功
It looks like you are trying to access MongoDB over HTTP on the native driver port.
简单执行:
.\mongo
> db
test
> db.test.insert({'a':'b'})
WriteResult({ "nInserted" : 1 })
可以安装 robomongo可视化管理mongodb。类似 navicat
爬虫常用库:
urllib,re (内置库)
需要安装的:
requests
selenium (驱动浏览器的库)
pip install selenium
可以用webdriver调用 chrome。但是会打开一个浏览器窗口,需要下载 chromedriver,百度搜
还可以安装一个 phantomjs ,需要下载,(phantomjs.org ), 这个没有浏览器窗口。纯命令行操作。
使用: from selenium import webdriver
webdriver = webdriver.PhantomJS()
webdriver.get('http://www.baidu.com')
webdriver.page_source
lxml (xpath 解析)
pip install lxml
beautifulsoup
pip install beautifulsoup4
from bs4 import BeautifulSoup
soup = BeautifulSopu('<html></html>','html')
pyquery ( 像 jquery)
pip install pyquery
from pyquery import PyQuery as pq
doc = pq('<html></html>')
doc = pq('<html>hello</html>')
result = doc('html').text()
result
存储库
pymysql
pip install pymysql
import pymysql
conn = pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='mysql')
cursor = conn.cursor()
cursor.execute('select * from db')
cursor.fetchone()
flask
pymongo
django
jupyter
jupyper notebook 会打开一个浏览器,就像本地操作python一样简单。
端口是8888,http://localhost:8888
get和post区别
get 请求会把参数都写在网址上。可以直接通过关键词进行筛选
post必须构造一个表单,然后把表单请求传给服务器。相对来说更安全一些。
请求url
https://www.baidu.com/s?wd=图片
document html
请求头 request headers
quqery string parameters
爬虫过程
请求(requests),返回(response),分析(xpath,beautifulsoup),存储(纯文本,关系型数据库mysql,非关系型数据库mongodb,redist)
如遇到javascrip,requests则取不到js渲染的信息,可以使用selenium 导入一个浏览器对象webdriver(chrome或者phantomjs),还可以用splash获取。还可以用pyv8,Ghost.py等等来下载。