爬虫
主要涉及的库
- requests:从因特网上下载文件和网页
- BeautifulSoup:解析HTML,即网页编写的格式
- multiprocessing
- itertools
爬取的主要步骤
- 根据关键字,城市,以及页面编号生成需要爬取的页面链接
- 用requests获取相应的网页内容
- 用BeautifulSoup解析,获取需要的关键信息
- 将爬取的信息存入数据库中,插入新的记录或更新已有记录
- 用multiprocessing启动多线程进行爬取,提高运行效率
项目目的
- 数据分析师岗位需求的地域性分布;
- 整个群体中薪酬分布的情况;
- 不同城市数据分析师的薪酬情况是怎样的;
- 该岗位对于工作经验的要求是怎样的;
- 根据工作经验的不同,薪酬是怎样变化的;
- 从用人单位的角度看,数据分析师应当具备哪些技能?
- 掌握不同技能是否会对薪酬有影响?影响是怎样的?
列表和字符串的相互转换
list=string.split('\n')
根据换行符将字符串拆分成列表string=" ".join(list)
用空格将列表中的元素连接成字符串
requests模块从Web下在文件
res=requests.get('url')
, res包含服务器对url请求作出的反应(html代码或其他)保存在res对象的text中。res.raise_for_status()
如果下载文件出错,抛出异常,程序中断,成功则什么也不做。res.iter_content(m)
每次迭代返回m个字节r=request.post("url",'key1':'value1','key2':'value2')
HTTP
- 保证客户机与服务器之间的通信:客户端想服务器提交HTTP请求,服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。
请求方法
- GET: 从指定的资源请求数据:查询字符串(名称/值对)是在请求的URL中发送,请求有长度的限制(2048),可保存在浏览器记录中,安全性较差,只应当用于取回数据。
- POST:向指定的资源提交要被处理的数据:查询字符串(名称/值对)是在POST请求的HTTP消息主体中发送,请求不会保留在浏览器历史记录中,不能被收藏,对数据长度没有要求,安全性更高。
- HEAD:从指定的资源请求数据,但只返回HTTP报头,不返回文档主体
- PUT:上传指定的URI表示
- DELETE:删除指定资源
- OPTIONS:返回服务器支持的HTTP方法
- CONNECT:把请求转换到透明的TCP/IP通道
爬虫要解决的问题
- 找到请求页面的方法,使得通过python访问得到通过浏览器访问一样的页面。
- 请求页面时一些参数的提交
- 找当前页面下一页的url
- 将爬到的数据保存在数据库中
- 对爬到的数据进行分析
- 利用多进程爬虫
- 利用加密解密
WEB开发
- HTML:定义页面的内容
- web服务器:负责发送HTML到浏览器的应用。
- CSS:控制页面元素的样式
- Javascript:页面的交互逻辑
web 应用
- 浏览器发送一个HTTP请求
- 服务器收到请求,生成一个HTML文档
- 服务器将HTML文档作为HTTP响应Body发送给浏览器
- 浏览器收到HTTP响应,从HTTP body中取出HTML文档并显示
web框架:解决以下问题的方式
- 怎样检测请求的url以及返回正确的页面
- 怎样处理get和post请求
- 怎样处理session和cookie
- 如何扩展程序使其处理上千个并发连接
建立web应用的最主要的问题
- 如何根据请求的url生成或找到相应的HTML代码
- 怎样动态的构造请求的HTML返回给客户端,怎样得到HTML中需要计算或者需要从数据库中取出的信息。
Python web框架工作方式
- 接收HTTP请求,分派代码,产生HTML,创建带有内容的HTTP响应。
- Django路由:请求处理url到负责生成HTML的代码之间的映射过程。不同的url对应不同的HTML代码。