只创建一个HelloWorld程序实在是体现不出python的强大来,而且很无趣,但谁让它有名气呢
听说Python对采集的支持非常强大,搞个采集项目吧
采集需要注意的点:
1、采集的内容源要合法,对方让采集才能去采集
2、采集来的内容,要用在合法的地方
3、采集效率要高一些,要不数据太多的话,得采集到什么时候去
4、采集不能让对方反感,不然就给封了
前面两点靠个人本心了,一般遵纪守法的公民都没啥问题
第三点需要用到多进程和多线程
第四点涉及到反爬虫,需要考虑的多一些
先来个简单点的吧,采集一个网站的页面,最简单的貌似就是获取IP地址了,而获取ip最简单的网站就是http://icanhazip.com,也可以自己建一个,不过需要自己先有台服务器
哎呀,有错误~~~,这是因为requests包没有,需要安装
好吧,装吧
如果配置过eclipse的cmd终端的话,可以直接运行终端进行模块安装
运行方法为:Run -> External Tools -> Python3_CMD
启动终端后,直接输入pip3 install requests --upgrade即可
好了,requests模块就安装好了,以后也可以在这个终端下安装其他python包了
看看代码里面还报错吗
好了,不报错的,说明模块安装成功
继续写代码
import requests
url = "http://icanhazip.com"
response = requests.get(url)
if response.status_code == 200:
ip = response.text.replace('\n', '').replace('\r', '')
response.close()
print(ip)
运行后终端打印出获取的ip地址了,就是本机的公网ip
第一个简单的抓取操作顺利完成
Python的采集可以使用很多种库,比如urllib3,requests,socket等等,但是强烈建议使用requests库,感觉更方便一些
requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在.content和.text两个对象中
两者区别在于,content中存的是字节码,而text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串。简而言之,.text是现成的字符串,.content还要编码。
假如采集过来的内容显示乱码的话,用.text就不方便了,就需要用.content进行手动编码,使用.content.decode('utf-8')把抓取的内容编码为utf-8格式。
中文常用的是utf-8、GBK、GB2312等编码格式
仅仅是这样做虽然是可以采集到对方网站数据,但还是不够的,对方会一眼看出这是用程序访问而不是用户访问,因此还需要伪装一下。