周末闲来无事,写了几个爬虫程序,主要是爬图片网站的图片,还有豆瓣top250的名字和评分
具体的全部源码单独写一篇进行展示,这里只记录一下写爬虫期间遇到的一些杂七杂八的问题
1.HTTPError: Forbidden
这个主要就是爬豆瓣的时候,访问可能太频繁了,被认出来是爬虫,就拒绝访问了
解决方法主要就是:
①换个ip,不过我是手机热点,重连了依然如此,更换代理ip也是如此,可能是我代码的问题
②把代码里面agent的部分换一下,比如我的之前是:
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')]
我换成
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0')]
就可以访问了,更换一个浏览器,然后打开审查元素,在里面找的
2.nothing to repeat的问题
这个就出现了一次,应该是正则模块匹配字符的时候没有匹配到任何字符,不管他
正则语法表达式我用的还不是很6,仅仅能试出来之后用代码记着,用的时候照搬
3.写入txt的问题
把变量转为字符串,然后:
with open('D:\test.txt','a',encoding='utf-8') as f: text = 'n'+zifuchuanbianliang f.write(text)
差不多就是这个意思,里面的a就是接着写,w就是覆盖
4.(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: tr
这个主要就是python里面不能用/这个斜杠代表路径
如果代表路径需要用反斜杠,因为/正斜杠代表转义字符,是python自己保留的
5.python 正则表达式 排除特定字符
一开始有这个疑问主要是因为,通过正则表达式找到一些字符,然后里面有我不需要的
(比如说我爬豆瓣的书名,结果书名爬下来了,但是里面有一些“可试读”被当做书名一起爬下来了)
后来也没弄明白,用了一个remove就去掉了“可试读”的内容
6.正则表达式排除特定字符串
输入:'一二三四五六七八九十,一二三四五六七八九十,一二三四哈六七八九十'
输出:" '三四五六' , '三四五六' "
那就可以这么写:三[^哈]{0,6}六
[^哈]就是任意不包括哈的字符(串)的意思
7.删除字符串的首尾,主要就是用于爬下来了特定信息,但是想把格式去掉,只包含有效信息
str.strip()是删掉所有位置的特定字符串
str.lstrip()是删掉前面位置的特定字符串
str.rstrip()是删掉末尾位置的特定字符串
8.'type' object is not subscriptable
这个主要就是下标格式错误,应该是圆括号,用了下标
这个是很初级的错误啦
9.删除掉列表当中指定的元素
就是a.remove()
如果有好多个,那就
while aa in a:
a.remove(aa)
加一个判断里面还有没有的语句
python是真方便啊,判断有没有这么简单
10.unindent does not match any outer indentation level
这个好像是制表符和空格混用了,缩进格式的问题
只需要在出问题的语句前后用几下tab就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)