极客学院课程地址:http://www.jikexueyuan.com/course/821_3.html?ss=1
向网页提交数据:
get,post 交互方式
分析目标网站
表单提交功能
get:从服务器获得数据
post:向服务器传数据
eg:
https://www.crowdfunder.com/browse/deals
request.post
步骤:构造表单,提交,获取返回信息
异步加载:菜做好一道上一道
不同于 菜做好了,再一次性上齐
网页 → 审查 → Headers → Request Method:GET (页面并没有 more,这里也没有POST)
Form Data → page:2
当有多个 page 的时候,直接提取,可能因为异步加载,无法提取到 more 的信息
这时 可以建立一个字典,并用 request.post 去提交表单,提取数据
#-*-coding:utf8-*-
import requests
import re
url='https://www.crowdfunder.com/'
data = {
'entities_only':'true'<span style="background-color: rgb(153, 255, 153);">,</span>
'page':'1'
}
html_post = requests.post(url<span style="background-color: rgb(153, 255, 153);">,</span>data=data)
title = re.findall('"card-title">(.*?)</div>', html_post.text, re.S)
for each in title:
print (each)
继续
实战:
http://www.jikexueyuan.com/course/
前20页的 课程名称,课程介绍,课程时间,课程等级,学习人数
步骤:
requests获取网页
re.sub换页
正则表达式匹配内容
问题:
课程介绍,后面是省略号 的情况该怎么办?
爬虫只能爬到可以看到的
有的课程的课程介绍也可能为空
解决方案:
先抓大后抓小:
另:windows下将命令提示符的编码强制转化成utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
实践中遇到问题: