0. 前序
每天迈出一小步,朝着目标迈一大步。
Python爬虫主要分为三大板块:抓取数据,分析数据,存储数据。
简单来说,爬虫要做就是通过指定的url,直接返回用户所需数据,无需人工一步步操作浏览器获取。
点击领取:【代码】【相关教程、资料】
1. 抓取数据
一般来说,访问网站url给我们返回两种格式数据,html和json。
1) 无参
抓取数据的大多数属于get请求,我们可以直接从网站所在服务器获取数据。在python自带模块中,主要有urllib及urllib2,requests等。
这里以requests为例。
Requests:
import requests
response = requests.get(url)
content = requests.get(url).content
content = requests.get(url).json()
print "response headers:", response.headers
print "content:", content
2)带参
此外,还有一种是以带参的形式抓取数据,参数一般附在url结尾,首个参数以"?“连接,后续参与以”&"连接。
data = {'data1':'XXXXX', 'data2':'XXXXX'}
Requests:data为dict,json
import requests
response = requests.get(url=url, params=data)
2.登录情况处理
1) post表单登录
先向服务器发送表单数据,服务器再将返回的cookie存入本地。
data = {'data1':'XXXXX', 'data2':'XXXXX'}
Requests:data为dict,json
import requests
response = requests.post(url=url, data=data)
2) 使用cookie登陆
使用cookie登录,服务器会认为你是一个已登录用户,会返回一个已登录的内容。需要验证码的情况,我们可以考虑此方式解决。
import requests
requests_session = requests.session()
response = requests_session.post(url=url_login, data=data)
3.反爬虫机制处理
我们知道,现在很多网站都做了反爬虫机制处理。
相信我们都遇到,当我们爬取某个网站的时候,第一次爬取可以,第二次可以,第三次就报失败了,会提示IP限制或者访问过于频繁报错等。
针对于这种情况,我们有几种方法解决。
1) 使用代理
主要是用于"限制IP"地址情况,同样也可以解决频繁访问需要验证码的问题。
我们可以维护一个代理IP池,网上可以查到很多免费的代理IP,我们可以选择我们所需要的。
proxies = {'http':'http://XX.XX.XX.XX:XXXX'}
Requests:
import requests
response = requests.get(url=url, proxies=proxies)
2)时间限制
解决频繁访问导致访问受限问题。遇到这种情况很简单,我们需要放缓两次点击之间的频率即可,加入sleep函数即可。
import time
time.sleep(1)
3) 伪装成浏览器访问
当我们看到一些爬虫代码的时候,会发现get请求会有headers头,这是在伪装浏览器访问的反盗链。
一些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。
有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
headers = {'User-Agent':'XXXXX'} # 伪装成浏览器访问,适用于拒绝爬虫的网站
headers = {'Referer':'XXXXX'}
headers = {'User-Agent':'XXXXX', 'Referer':'XXXXX'}
Requests:
response = requests.get(url=url, headers=headers)
4) 断线重连
可以参考两种方法。
def multi_session(session, *arg):
retryTimes = 20
while retryTimes>0:
try:
return session.post(*arg)
except:
retryTimes -= 1
或
def multi_open(opener, *arg):
retryTimes = 20
while retryTimes>0:
try:
return opener.open(*arg)
except:
retryTimes -= 1
这样我们就可以使用multi_session或multi_open对爬虫抓取的session或opener进行保持。
4.多线程爬取
点击领取:【代码】【相关教程、资料】
当我们爬取或者数据量过大,可以考虑使用多线程。这里介绍一种,当然还有其他方式实现。
import multiprocessing as mp
def func():
pass
p = mp.Pool()
p.map_async(func)
# 关闭pool,使其不在接受新的(主进程)任务
p.close()
# 主进程阻塞后,让子进程继续运行完成,子进程运行完后,再把主进程全部关掉。
p.join(
5. 分析
一般获取的服务器返回数据主要有两种,html和json。
html格式数据,可以采用BeautifulSoup,lxml,正则表达式等处理
json格式数据,可以采用Python列表,json,正则表达式等方式处理
此外,我们可以采用numpy, pandas,matplotlib,pyecharts等模块包做相应的数据分析,可视化展示等。
6. 存储
数据抓取,分析处理完后,一般我们还需要把数据存储下来,常见的方式有存入数据库,excel表格的。根据自己需要选择合适的方式,把数据处理成合适的方式入库。
读者福利:知道你对Python感兴趣,便准备了这套python学习资料
👉[[CSDN大礼包:《python兼职资源&全套学习资料》免费分享]](安全链接,放心点击)
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
- ① Python所有方向的学习路线图,清楚各个方向要学什么东西
- ② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析
- ③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论
- ④ 20款主流手游迫解 爬虫手游逆行迫解教程包
- ⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解
- ⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解
- ⑦ 超300本Python电子好书,从入门到高阶应有尽有
- ⑧ 华为出品独家Python漫画教程,手机也能学习
- ⑨ 历年互联网企业Python面试真题,复习时非常方便
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
👉python副业兼职与全职路线👈
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓