1. 爬虫基础模板
import requests
class MaoYanSpider(object):
def __init__(self):
pass
def get_html(self, url):
"""发送请求功能"""
pass
def parse_html(self, html):
"""提取数据"""
pass
def save(self):
"""存储数据"""
pass
def crawl(self):
"""程序的入口"""
pass
spider = MaoYanSpider()
spider.crawl()
1. requests.get()
该方法用于 GET 请求,表示向网站发起请求,获取页面响应对象。语法如下:
response = requests.get(url,headers=headers,params,timeout)
url
:要抓取的url
地址。- headers:用于包装请求头信息。
params
:请求时携带的查询字符串参数。
2. HttpResponse
响应对象
我们使用 Requests 模块向一个URL发起请求后会返回一个 HttpResponse
响应对象。
响应对象属性:
- text:获取响应内容字符串类型
- content:获取到响应内容bytes类型(抓取图片、音频、视频文件)
- encoding:查看或者指定响应字符编码
3. 正则表达式
定义:按照一定的规则 从每个字符串当中匹配到我们想要数据
r_list=re.findall('正则表达式',html,re.S)
正则表达式元字符
元字符 | 含义 |
---|---|
. | 任意一个字符(不包括\n) |
\d | 一个数字 |
\s | 空白字符 |
\S | 非空白字符 |
[] | 包含[]内容 |
* | 出现0次或多次 |
+ | 出现1次或多次 |
贪婪匹配和非贪婪匹配:
- 贪婪匹配:匹配重复的元字符总是尽可能多的向后匹配内容。
- 非贪婪匹配:让匹配重复的元字符尽可能少的向后匹配内容。
正则表达式分组:将每个圆括号中子模式匹配出来的结果提取出来
- 先按整体正则匹配,然后再提取分组()中的内容
- 在网页中,想要什么内容,就加()
- 如果有2个及以上分组(),则结果中以元组形式显示 [(),(),()]
4. pymysql
- 建立数据库连接db =
pymysql.connect(...)
- 参数host:连接的mysql主机,如果本机是’127.0.0.1’
- 参数port:连接的mysql主机的端口,默认是3306
- 参数database:数据库的名称
- 参数user:连接的用户名
- 参数password:连接的密码
- 参数charset:通信采用的编码方式,推荐使用utf8
- 创建游标对象cur = db.cursor()
- 游标方法: cur.execute(“insert …”)
- 提交到数据库或者获取数据 : db.commit()
- 关闭游标对象 :cur.close()
- 断开数据库连接 :db.close()