工作总结--python

  1. Python代码以缩进表示一个代码块,故要格外注意代码的缩进,你的爬虫不能运行有可能就是你的方法和类并列了
  2. Python是大小写敏感的,写错了,会报错
  3. 杀掉进程:kill -9 爬虫进程编号
  4. 检查已启动的爬虫./check py
  5. 查看redis key:

keys *:查看当前redis key

flushall:清空redis key

llen key:查看redis key中存放的链接数

  1. 在爬虫目录下启动爬虫并将日志信息(错误和正确都输出)输出到指定文件,返回进程编号: nohup python start_append.py > /root/logs/WeiY_imp.log 2>&1 &
  2. Vi进入文件编辑状态;
  3. i启用编辑;
  4. esc->:wq!保存并退出,:q!是不保存退出;
  5. 将数据从A数据表复制到B数据表时,直接使用insert,效率高,若使用循环一条一条插入效率较慢;
  6. Scrapy创建python项目:cmd->scrapy startproject 项目名称->cd爬虫项目文件目录下scrapy genspider 爬虫文件名 爬取的网站链接
  7. 运行爬虫文件:scrapy crawl 爬虫名称(必须在项目目录下打开cmd执行)
  8. num=re.findall(r"=(.+?)",” http://www.ioncol.com/article/NewsList.aspx?tp=5”),第一个参数为匹配规则,第二个为字符串,=(.+?)匹配等号后的所有字符;(.+?)可以放在任意字符之间和前后,如字符串”a123b”,那么a(.+?)b获取到的就是123
  9. \s*:匹配空格;[:]匹配冒号;\d{1,2}:匹配一位或两位数字;/不需要转义
  10. 如:字符串为“作者:  宫子木  杨威   日期:2016/12/11 0:21:40”,使用泽正匹配日期:“\d{4}/\d{1,2}/\d{1,2}\s*\d{1,2}[:]\d{2}[:]\d{2}”,成功匹配2016/12/11 0:21:40
  11. sort_new=re.sub(r'\s+','',sort_name[1]):替换字段中的空格
  12. url解码使用urllib中的unquote,对应编码为quote;encode为编码,decode为解码,python 中的默认编码是unicode,在爬虫文件第一行写“# -*- coding: utf-8 -*-”表示使用utf-8进行编码
  13. sort=re.sub(r'\s+','',sort_name[1]):将sort_name[0]中的所有空格替换掉,\s+表示所有空格
  14. 匹配两个特定字符间的内容:re.findall(r'.*科室:(.*) .*',’ <p> 任职机构:北京市急救中心 所在科室:急诊科  <p>   <p>   <p>  <p>’),匹配结果:急诊科
  15. search(pattern, string, flags=0)      在一个字符串中查找匹配
  16. findall(pattern, string ,flags=0)     找到匹配,返回所有匹配部分的列表
  17. sub(pattern, repl, string , count=0, flags=0)    将字符串中匹配正则表达式的部分替换为其他值
  18. split(pattern, string ,maxsplit=0, flags=0)  根据匹配分割字符串,返回分隔符串组成的列表
  19. //span[text()="我的文章"]/following-sibling::span[1]:取位于span[text()="我的文章"]节点后的同级标签span[1]的内容;preceding-sibling取位于自身标签前的同级标签;parent取父节点
  20. Lpush,rpush是会有重复链接,即从左或右给集合中放链接;sadd无重复链接,将链接放入set中,若使用sadd需要修改中间件中Retry的类,否则会报错
  21. 查找字符串中是否包含某字符,可以使用正则方法,也可以使用python内置函数find,会返回该字符起始位置的索引,若字符在字符串的开头位置则返回0,若找不到字符则返回-1
  22. 使用list前先定义好

-----------------------------------------------补充------------------------------------------------------------------- 

  1. redis和单机最好不要混用,循环range(1,10),有1没有10。
  2. DNS lookup failed: no results for hostname lookup: 域名不正确,查看链接是否拼接正确
  3. Redirecting (301):重定向,解决办法:加请求头加cookie,若依旧不行,可依据网站方法解决:https://www.jianshu.com/p/b9c832977c00
  4. setting里填上REDIRECT_ENABLED = False 设置禁止重定向
  5. 使用json.load()和json.loads()加载json数据,获取到的数据是dict类型(可使用type()查看数据类型)。详解两种方法:https://blog.csdn.net/xiongchengluo1129/article/details/78779418
  6. 使用json.loads()加载json数据:https://www.cnblogs.com/gide/p/5247146.html
  7. replace只能用于字符串替换,re.subn(正则表达式,新字符,要替换的字符串)可以用于正则替换
  8. Ajax异步请求中的数据(例如:百度学术,采集固定年份的数据):使用header中的请求链接,并将form data中的放入字典中作为参数与请求一起发送。但是部分请求的data必须放在url中,如:(爬虫文件:smiic/request_spider)

-----------------------------------补充---------------------------------------------- 

  1. 创建set集合有两种:s={}或set()函数创建,但是如果要创建一个空set集合,则必须使用set()函数创建
  2. 线程池:https://www.cnblogs.com/freeman818/p/7154089.html#undefined。文件位置:爬虫smiic中eee.py
  3. python中的for循环不是传统的for循环,python的for循环不适用索引,使用迭代器,迭代器是惰性的,只能使用一次,在已经遍历了一次的情况下,是无法进行二次迭代的。原文链接:https://blog.csdn.net/bruce_6/article/details/81025444
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值