前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫篇——基础知识介绍爬虫步骤内容请求网页(requests库)html页面解析网页

爬虫篇——基础知识介绍爬虫步骤内容请求网页(requests库)html页面解析网页

作者头像
DC童生
发布2018-04-28 11:46:07
1.5K0
发布2018-04-28 11:46:07
举报
文章被收录于专栏:机器学习原理机器学习原理

前言:

爬虫是信息和数据获取的一种手段,写此文一方面梳理一下自己学习知识的思路,如果再能帮到一些人就更好了。

  • 爬虫步骤

爬虫的步骤一般类似,步骤如下:

  • 1.请求网页得到源代码
  • 2.对源码进行解析
  • 3.获得自己想要的信息
  • 4.保存
  • 内容

通过爬虫步骤,本文主内容如下

  • requests库(用于请求网页)
  • html网页简单分析
  • bs4 and lxml对网页进行解析

个人感觉lxml比bs4简洁一些

  • 请求网页(requests库)

*基本请求get 或 post

代码语言:javascript
复制
'''#<Response [200]>表示正常访问
cookies参数
post请求,参数为data
'''
import requests
r = requests.get("https://www.jianshu.com/")
print(r)
#查看状态码
print(r.status_code)
#查看编码
print(r.encoding)
#cookies
print(r.cookies)

模拟登陆

代码语言:javascript
复制
使用get传递参数,params={};headers={};
headers参数,模拟登陆
parm = {"name":"meimei","age":18}
head ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 "}
re = requests.get("https://httpbin.org/get",params=parm,headers=head)
print(re.text)

例子:下载音乐

代码语言:javascript
复制
r = requests.get("http://zhangmenshiting.qianqian.com/data2/music/c834308c5e8935a67ac9d2000eed1d64/554927014/554927014.mp3?xcode=6fb9f3c231e1399d48ae5c20176c0886",stream=True)
# print(r.content)
with open("1.mp3","wb") as file:
    for i in r.iter_content(1024*10):#每次写的大小
        file.write(i)
  • cookies参数 和 session会话 当你访问有登陆网站的服务器之后,服务器会建立一个session同时返回给你相对应的cookies参数,你再次访问就不需要再次输入密码了
代码语言:javascript
复制
s= requests.session()#开启session会话,后面加上update(head)

head ={'cookies':'one',"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 "}
r = s.get("https://httpbin.org/get",headers=head)
print(r.text)
s.headers.update(head)
r = s.get("https://httpbin.org/get",headers={"cooke":"two"})
print(r.text)

第二次访问继承了第一次访问的cookies

  • html页面

一张图就ok了

image.png

  • 解析网页

bs4后面用一个例子介绍,这里介绍更简单的lxml

  • lxml 注意,下载lxml模块3.7.3版本 解析前面获取的源码,代码如下
代码语言:javascript
复制
from lxml import etree
import requests
url = "https://www.cnblogs.com/"
head ={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'
}
r = requests.get(url,head).content.decode("utf-8")
#解析
html = etree.HTML(r)
  • 数据获取,用xpath选取节点
代码语言:javascript
复制
选取节点
dom = html.xpath("/html/body/div")#从根节点开始,以列表形式返回
print(dom)

dom = html.xpath("//a")#返回文档中所有的a标签
print(dom)
dom = html.xpath("//@*")#返回所有属性
print(dom)
or的用法
dom = html.xpath("//*[@class='one']")
dom1 = html.xpath("//*[@class='one' or @class='two']")
print(dom)
print(dom1)

获取文本 获取属性值

代码语言:javascript
复制
#获取文本
dom = html.xpath("//*[@class='one']/text()")#获取list
dom1 = html.xpath("string(//*[@class='one'])")#获取节点里面所有的内容
print(dom)
print(dom1)
#获取属性
dom3 = html.xpath("//*[@class='one']/@href")
print(dom3)

爬虫篇(4)——qq音乐爬取

爬虫篇(3)——招聘网站招聘信息的爬取

爬虫篇(2)——爬取博客内容

爬虫篇(1)——从爬取练习题开始

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.02.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档