最近在一个付费网站开了一个会员,这个网站主要是分享一些资源,然后用户通过一定的积分去获取链接的密码才能获取。刚开始的几天,每天去签到挣积分,慢慢地发现积分远远不够用,挣了好几天一次就没了。于是开了一个月的VIP,积分随便用,这种感觉还是人民币玩家爽啊。今天,我突然想用爬虫将资源全部爬下来,这样就可以在会员到期后同样使用。说干就干,拿着Python就冲上去了。经过数次挫败,终于在几个小时后看见了成果。下面总结一下遇到的问题。
模拟登陆
由于网站资源是隐藏的,只有在登录账号之后才能看见,所以第一步就是模拟登陆。模拟登陆用的是selenium驱动火狐浏览器登录,登陆之后将cookie保存下来,然后再用requests访问网站时将cookie添加进去,这样在访问时就可以实现自动登录,也就可以看VIP的影藏内容了,然后就像往常一样用beautifulsoup解析网页提取出需要的资源即可。如下例代码。关于模拟登陆具体操作可参考公众号文章《
爬虫需要登录怎么办?这份python登录代码请收下
》
读写txt文件
Python在读写文件时要设置编码格式,py文件默认是ASCII编码,中文在显示时需要做一个ASCII到系统默认编码的转换,然后再写入的时候进行encode成对应想要的编码类型,这样可以保证源文件的编码方式不会改变,且中文不会乱码。如下例读写文件代码:
写入txt
读取文件
python打开文件的几种模式:
‘r’:只读(缺省。如果文件不存在,则抛出错误)
‘w’:只写(如果文件不存在,则自动创建文件)
‘a’:附加到文件末尾
‘r+’:读写
beautifulsoup与正则表达式
在进行解析网页时,由于以前用的都是beautifulsoup,但在通过类名查找时路径找的比较麻烦,所以想试试正则表达式,在找好教程后找了一个网页试试发现速度太慢,可能是刚开始用不太会,对于不太规则的网站来说有时候匹配不出来。所以最后还是选择beautifulsoup。对于Beautifulsoup、Xpath和正则表达式三种信息提取的方法,Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能,且Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码,你不需要考虑编码方式。XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。正则表达式描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。个人认为,对于一般不太复杂的网页来说还是比较喜欢用BeautifulSoup。
在解决好上面几个问题后,开始运行我的爬虫,看到结果出来的时候还是很激动的。但过了一会报错了,检查发现访问此时太多ip被限制了。于是换了一个试试爬了一会又被限制,原来每天有固定的次数,看来今天的用完了,只能明天再继续爬了。虽然这次爬虫任务量不大,但收获还是挺多的,通过不断地练习慢慢就会有经验,看到错误就会有解决的思路。希望大家多关注公众号,在实战中成长,在实战中进步。
▼
领取专属 10元无门槛券
私享最新 技术干货