0.知识点简要回顾
一.爬虫的过程 1. 需求,确定有需求的人到底想要什么 2. 根据需求寻找网站 3. 网站数据获取到本地(urllib,requests) 4. 定位数据(正则,xpath,json) 5. 存储(数据库,磁盘,网络发送)(mysql,redis,文件)6.反爬虫:其他公司不想让我们获取他们的数据,通过HTTP请求头,请求频率(通过判断是不是同一个ip,投毒:一直给你假数据),判断是否是爬虫程序7.发送请求 (HTTP) 1.我是谁,我找谁 (url) 2.名字 (User-Agent: (HTTP请求的名字) 1.py版本 2.urllib) 3.介绍信息 (referer:介绍人,从哪个页面跳转到我的页面,要跳转的地方就是我请求的页面) 4.你有没有来过 (cookie:返回信息,标识你来过) 返回响应 (response)8.获取webserver的返回信息 1.url 2.接口设计,response = openurl(url) 3.存储response
1.requests 的get用法(resposne.content 相当于 response.read())
import requests
url = 'http://www.baidu.com'
response = requests.get(url)
with open('baidu.html', 'wb') as f:
# response = urllib.request.urlopen(url)
f.write(response.content)2. requests 的post用法
import requests
import json
# 1. url
url = 'http://fanyi.baidu.com/sug'
# 2. form/ data/ body
def translate(kw):
form = {
'kw': kw
}
response = requests.post(url, data=form)
# str = response.content.decode('utf-8/gbk/gb2312/gb18080') =
response.encoding = 'utf-8/gbk/gb2312/gb18080' #指定可用的编码格式
str = response.text
# 4. 解析json
res_dict = json.loads(response.text)
# 5. 打印翻译结果
#print(res_dict)
result = res_dict['data'][0]['v']
return result
if __name__ == '__main__':
res = translate('天气')
print(res)3. mysql 测试,mysql_coon 主要的功能就是, 将链接数据库的操作变成只连接一次。
import pymysql
class mysql_conn(object):
# 魔术方法,构造函数:初始化魔术方法。触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中)。参数:至少有一个self接收对象。返回值:无。作用:初始化对象的成员。注意:使用该方式初始化的成员都是直接写入对象当中,类中无法具有。
def __init__(self):
self.db = pymysql.connect(host='127.0.0.1', user='root', password='abc123', port=3306, database='py1011')
self.cursor = self.db.cursor()
# 执行modify(修改)相关的操作
def execute_modify_mysql(self, sql):
self.cursor.execute(sql)
self.db.commit()
# 魔术方法, 析构化 ,析构魔术方法。触发时机:当对象没有用(没有任何变量引用)的时候被触发。参数:一个self接收对象。返回值:无。作用:使用完对象时回收资源,注意:del不一定会触发当前方法,只有当前对象没有任何变量接收时才会触发。
def __del__(self):
self.cursor.close()
self.db.close()
if __name__ == '__main__':
sql = 'insert into xueqiu_test values (3)'
mc = mysql_conn()
mc.execute_modify_mysql(sql)
sql = 'insert into xueqiu_test values (4)'
mc.execute_modify_mysql(sql)
sql = 'insert into xueqiu_test values (5)'
mc.execute_modify_mysql(sql)
sql = 'insert into xueqiu_test values (6)'
mc.execute_modify_mysql(sql)4. 正则
1.(用match)正则需从头开始匹配 ,匹配内容开头必须相同,否则匹配失败 2. ".":可以匹配除换行符外的任意字符 3.(以h开头后面必须跟着一个“.”--》‘h\.’):‘h1111’,‘h.111’。前者匹配失败,后者匹配成功,反斜杠:转义字符,取消其之后符号的特殊意义,字符串形式输出(原样输出) 4.‘h\\\\’--> 计算机将其识别成 ‘h\\’的字符串(两个反斜杠‘\’会被计算机识别成一个反斜杠),前一个\是转义字符,打印出来是‘h\’ 5.$:结束符,比如‘h.$’: ‘h’后面只能跟着一个字符,之后必须结束,长度只能是 2 6. ‘\d’:匹配任意0-9的数字,‘*’:前面所匹配的东西,匹配次数0-n次
版权声明:本文为fyw0615原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。