Python爬虫resquests模块简单使用

本次爬虫使用requests模块爬取信息,使用BeautifulSoup4解析页面,爬取csdn首页,并解析出部分内容,并存入本地文件。

一、requests模块

1、简介
requests是使用Apache2 licensed 许可证的HTTP库。

用python编写。

比urllib2模块更简洁。

Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。

在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。

现代,国际化,友好。

requests会自动实现持久连接keep-alive

pip install requests

2、简单入门
以get方式为例,抓取信息,如下所示,支持post等所有请求方式。
resquests文档链接

import requests
r = requests.get('https://github.com/Ranxf')       # 最基本的不带参数的get请求
 r1 = requests.get(url='http://dict.baidu.com/s', params={'wd': 'python'})      # 带参数的get请求

3、响应内容

from bs4 import BeautifulSoup
import requests
#get方式爬取csdn首页,获得响应
response =requests.get("https://www.csdn.net")
#获得url
r1=response.url
#获得编码方式
r2=response.encoding
#获得二进制数据
r3=response.content
#获得状态码
r4=response.status_code
#获得数据
r5=response.text
#获得cookles
r6=response.cookies
#获得响应头
r7=response.headers


print(r1)
print(r2)
print(r3)
print(r4)
print(r5)
print(r6)
print(r7)

以下为结果,不过省去了数据

https://www.csdn.net/
UTF-8

200


<RequestsCookieJar[<Cookie dc_session_id=10_1563026894511.697120 for .csdn.net/>, <Cookie uuid_tt_dd=10_9890689230-1563026894511-248045 for .csdn.net/>]>

{'Server': 'openresty', 'Date': 'Sat, 13 Jul 2019 14:08:14 GMT', 'Content-Type': 'text/html; charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=20', 'Set-Cookie': 'uuid_tt_dd=10_9890689230-1563026894511-248045; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net;, dc_session_id=10_1563026894511.697120; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net;', 'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', 'Strict-Transport-Security': 'max-age=31536000'}

二、BeautifulSoup模块

1、简介
BeautifulSoup 是一个用于解析 HTML 文档的 Python 库,通过 BeautifulSoup,你只需要用很少的代码就可以提取出 HTML 中任何感兴趣的内容,此外,它还有一定的 HTML 容错能力,对于一个格式不完整的HTML 文档,它也可以正确处理。

pip install beautifulsoup4

2、简单例子
构建一个 BeautifulSoup 对象需要两个参数,第一个参数是将要解析的 HTML 文本字符串,第二个参数告诉 BeautifulSoup 使用哪个解析器来解析 HTML。

解析器负责把 HTML 解析成相关的对象,而 BeautifulSoup 负责操作数据(增删改查)。“html.parser” 是 Python 内置的解析器,“lxml” 则是一个基于c语言开发的解析器,它的执行速度更快,不过它需要额外安装

通过 BeautifulSoup 对象可以定位到 HTML 中的任何一个标签节点。

from bs4 import BeautifulSoup  
text = """
<html>  
    <head>
     <title >hello, world</title>
    </head>
    <body>
        <h1>BeautifulSoup</h1>
        <p class="bold">如何使用BeautifulSoup</p>
        <p class="big" id="key1"> 第二个p标签</p>
        <a href="http://foofish.net">python</a>
    </body>
</html>  
"""
soup = BeautifulSoup(text, "html.parser")
 
# title 标签
>>> soup.title
<title>hello, world</title> 
3、使用

1、遍历文档树,顾名思义,就是是从根节点 html 标签开始遍历,直到找到目标元素为止,遍历的一个缺陷是,如果你要找的内容在文档的末尾,那么它要遍历整个文档才能找到它,速度上就慢了。因此还需要配合第二种方法。

通过遍历文档树的方式获取标签节点可以直接通过 .标签名的方式获取,例如:

获取 body 标签:soup.body
获取 p 标签soup.body.p
获取 p 标签的内容soup.body.p.string

2、搜索文档树: 搜索文档树是通过指定标签名来搜索元素,还可以通过指定标签的属性值来精确定位某个节点元素,最常用的两个方法就是 find 和 find_all。

find_all( name , attrs , recursive , text , **kwargs )

find_all 的返回值是一个 Tag 组成的列表,方法调用非常灵活,所有的参数都是可选的。

第一个参数 name 是标签节点的名字。第二个参数是标签的class属性值

# 找到所有标签名为title的节点
>>> soup.find_all("title")
[<title>hello, world</title>]
# 找到所有class属性为big的p标签
>>> soup.find_all("p", "big")
[<p class="big"> \xb5\xda\xb6\xfe\xb8\xf6p\xb1\xea\xc7\xa9</p>]

三、简单实例

from bs4 import BeautifulSoup
import requests
#get方式爬取csdn首页,获得响应
response =requests.get("https://www.csdn.net")
soup = BeautifulSoup(response.text, "html.parser")
with open("f:\\00.txt","w") as file:
    file.write(str(soup.encode("utf-8")))
    file.close()

已经写入本地文件

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值