这一段主要是在做爬虫时,会用到的操作及代码设置
------------------------------------------------------------------
cookies 开启 -----抓取登录后的信息时
scrapy crawl 爬虫名 -o file.json
如果要查看 vim file.json
要保存到数据库的话 ----settings.py配置 开启pipeline
伪装
ip代理,随机user-agent
中间件定义完要在settings.py配置
爬虫文件名和爬虫名不能相同
------------------------------------------------------------------
Re 正则
-----简洁,特征 的思想
^-?\d+$ 整数形式的字符串
^[0-9]*[1-9][0-9]*$ 正整数形式的字符串
? 前一个字符 出现一次或零次
[\u4e00-\u9fa5] 匹配中文字符
\d{3}-\d{8}|\d{4}-\d{7} 国内电话号码 010-68695847 0110-1597534
ip地址精确写法
0-99: [1-9]?\d 100-199 : 1\d{2}
200-249 : 2[0-4]\d 250-255 : 25[0-5]
(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])
Re库
当[正则表达式] 包含转义符时 使用raw string
也就是加 'r'
re.search() 从字符串中匹配正则表达式的第一个位置 返回match对象
re.match() 从一个字符串的开始位置匹配正则表达式 返回match对象
re.findall() 搜索字符串 以列表类型返回全部能匹配的子串
re.split() 将字符串按正则结果进行分割,返回列表类型
re.finditer() 搜索字符串 返回匹配结果的迭代类型 每一个迭代元素match对象
re.sub() 在一个字符串中替换所有匹配正则表达式的子串 返回替换后字符串
python中json中的loads()和dumps()它们的作用经常弄换了,这里记录下,loads方法是把json对象转化为python对象,dumps方法是把pyhon对象转化为json对象,
regex =re.compile(pattern ,flags =0) -----将正则表达式的字符串形式编译成正则表达式对象
贪婪匹配 ----输出最长的串
以下均可最小匹配
*?
+?
??
{m,n}?
---------------------------------------------------------
字母数字 [a-zA-Z0-9]
\d 数字[0-9] \D 非数字[^0-9]
\w字母数字[a-zA-Z0-9]
\s空白字符 [\t\n\r\f\v]
.+ 任何非换行符 至少一次{1,}
.* 任何非换行符 至少零次{0,}
? 零次或一次{0,1}
r'\hello.world' 前缀r 可以使反斜杠不以特殊字符处理
\b 单词边界 仅匹配单词的开始和结束
group() 从左向右只算开放括号字符
(?<name>...) name是组的名称
------------------------------------------------------------------
scrapy框架
可以分为7部分
5个组件
2个中间件 ---可以对特别需求,用户可以修改配置
整个框架是半成品
已经写好的---如果有特别的需求,可以对已有结构进行修改(主要是作用中间件)
engine ---核心 ,控制所有模块的数据流
scheduler ----对所有爬取请求进行调度管理
downloader ----下载请求网页
用户只需要配置
spiders(入口)
item pipeline(出口)---流水线方式处理spider产生的爬取项
每个操作是一个Item Pipeline类型
包括:清理,检验,查重爬取项中的html数据,将数据持久到数据库
yield ---生成器
好处:
每完成一次循环会提交数据,然后自己被冻结,等下次调用
节省存储空间