6分钟 Python 爬虫入门

一.requests 库

这是我们调用访问网址的接口所在的库

1.设置headers请求头

import requests

url = 'https://www.lmonkey.com/'

# 定义头部信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}

res = requests.get(url=url)

code = res.status_code
print(res)

如果不设置headers请求头,网站就会知道我们是一个python程序,从而不让我们访问(甚至会封禁我们的ip);设置请求头就是将我们的python程序伪装成一个浏览器。

2. get请求

光说大家肯定会暴躁,来看一段代码

import requests

# 定义url
url_1 = 'https://www.baidu.com'

# 发生get请求
res = requests.get(url=url_1)

"""
# 获取响应结果
print(res)  #
print(res.status_code) #请求状态码
print(res.content) #b'...' 二进制的文本流
print(res.content.decode('utf-8')) #把二进制文本流按指定编码格式转换为字符串
print(res.text) #获取响应的内容
print(res.url) #获取请求的url地址
print(res.request.headers) #h获取请求头信息 request
print(res.headers) #响应头信息 response
"""

这里定义的 url_1 是我们要访问的网址

res = requests.get(url=url_1) 是对我们定义的网址进行一次get请求,请求结果保存在res中。想这种就是模版,大家多写几次就记住了。

print(res.status_code) #请求状态码 ,是我们判断访问是否成功的标志,输出200证明返回成功,常见的失败有404,405啥的,大家应该可以明白这个状态码是啥了。

3.post请求

import requests

u = 'https://fanyi.baidu.com/sug'

# 定义头部信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}

# POST发送的数据
data = {
    'kw': '你好'
}

# 发送请求
res = requests.post(url=u, headers=headers, data=data)

# 接收返回数据
print(res.status_code)
# print(res.text)

data 是我们要给网站传送的数据

4.在headers中设置cookie

有的网站的数据需要我们登录才能获取,这时候就要设置cookie了。

import requests

#这是我们想要访问的网站内容
u = 'http://www.rrys2019.com/User/User'

# 定义头部信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}

#这是我们要设置登录cookie的网址
loginurl = 'http://www.rrys2019.com/User/Login/ajaxLogin'

req = requests.session()

data = {
    'account': '********', #你自己的账号
    'password': '********', #密码
    'remember': '1',
    'url_back': 'http://www.rrys2019.com/User/User/'
}

# 发送请求
res = req.post(url=loginurl, headers=headers,data=data)

code = res.status_code

# print(code)
print(res.text)

下面教大家找到设置登录cookie的网址

6分钟 Python 爬虫入门_第1张图片

点击登录

6分钟 Python 爬虫入门_第2张图片

找到需要post请求的网址,查看他的内容

6分钟 Python 爬虫入门_第3张图片

发现传递的格式是 {accout:’’,password:’’,remember:’’,url_back:’’}

于是我们就要构造这种传递的方式

data = {
    'account': '********', #你自己的账号
    'password': '********', #密码
    'remember': '1',
    'url_back': 'http://www.rrys2019.com/User/User/'
}

这样我们就设置好了登录的cookie,可以获取登录后才能查看的内容了。

到这里你已经学会了获取网站的html的内容。可以自己去尝试一下。https://www.lmonkey.com/users/wLndYGMEg(可以去试试爬取这个网站的内容)

二. lxml库 (学习使用xpath)

1.绝对路径选择

from lxml import etree

text = '''



    
        
        Spotlight
        
        
    
    
    
        

点击kiki对你卖萌

许佳琪,1995年8月27日出生于浙江省,中国内地流行乐女歌手、影视演员,SNH48一期生,SNH48 Team SII成员,7SENSES成员 ,《青春有你第二季》训练生。
队内职务: 门面担当、舞蹈担当、Rapper担当
'''
#解析html字符串 html = etree.HTML(text) #提取数据 r = html.xpath('/html/body/h1/text()') print(r) #选择第几个 m = html.xpath('/html/body/div[2]/div[2]/text()') print(m)

6分钟 Python 爬虫入门_第4张图片

大家这么聪明肯定看代码就知道如何使用xpath了。值得一提的是xpath的下表是从1开始的。such as, div[1].

2.使用类名选择

6分钟 Python 爬虫入门_第5张图片

‘//div[@class=“reno3_1”] 是寻找所有div,再看看谁的’class’=‘reno3_1’。

'/text()'是获取标签内的内容

三.bs4 库 (使用BeautifulSoup)

1.通过标签获取数据

from bs4 import BeautifulSoup

html_doc = """



    
        
        Spotlight
        
        
    
    
    
        

点击kiki对你卖萌

许佳琪,1995年8月27日出生于浙江省,中国内地流行乐女歌手、影视演员,SNH48一期生,SNH48 Team SII成员,7SENSES成员 ,《青春有你第二季》训练生。
队内职务: 门面担当、舞蹈担当、Rapper担当
"""
soup = BeautifulSoup(html_doc, 'lxml') # 1.通过tag标签对象获取文档数据 # r = soup.link['type'] # r = soup.h1.text # r = soup.h1.parent.name print(r)

6分钟 Python 爬虫入门_第6张图片

2.通过find函数查找

# 2.通过搜索获取页面中的元素 find find_all
 #r = soup.find('button')
 #r = soup.find_all('button',οnclick='nextImage()')
 r = soup.find_all('title')
 x = r.get_text()
# print(r)

6分钟 Python 爬虫入门_第7张图片

3.通过css标签选择

# 3.css选择器
# 通过标签选择元素;
# r = soup.select('title')
# print(r)
# 通过class,id 选择;
# r = soup.select('.bt1')
# r = soup.select('#next')
# 通过空格 层级关系;逗号,并列关系
r = soup.select('a, title')
print(r)

6分钟 Python 爬虫入门_第8张图片

你可能感兴趣的:(Python)