栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

爬虫——requests和BeautifulSoup4学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬虫——requests和BeautifulSoup4学习

爬虫

爬虫就是把网页上的内容获取下来,存到你想要的地方。需要用到的基本库有requests和BeautufulSoup4。本文简要概述两个库的一些常用函数的用法,并从中国新闻网爬取即时新闻并保存在csv中。

安装
pip install requests 
pip install beautifulsoup4
导入
import requests
from bs4 import BeautifulSoup
requests的用法
# 第一步:发送请求
r = requests.get('url')		# url为网址链接或地址

r.text						# 返回网页内容
encoding					# 解码 r.text 的编码方式
r.status_code				# 状态码
r.reason					# 响应状态的描述,比如 "Not Found" 或 "OK"
r.apparent_encoding			# 编码,比如'utf-8' 或 'gbk'
r.json()					# 请求json文件时, 返回json数据

requests方法  
	get(url, params, args)	           # 发送 GET 请求到指定 url
	post(url, data, json, args)	       # 发送 POST 请求到指定 url
	# get是从服务器上获取数据,post是向服务器传送数据

更多详细用法可参考菜鸟教程。


BeautifulSoup4的用法

BeautifulSoup4根据响应结果解析页面、提取数据,写入到文件、数据库中。
简单来说,它可以将HTML转成一个树状结构,树的结点即为每一个数据元素,因此我们可以很方便的使用父子选择器来提取数据。

soup = BeautifulSoup(html, 'html.parser')
# 这样就形成了一个 soup 对象,即 BeautifulSoup 解析对象

select					# 根据CSS选择器(标签、class、id等)定位数据,得到的是符合这个选择器的所有结果(整体是列表,列表中每个元素是一个bs4类型的数据)
select_one				# 根据CSS选择器(标签、class、id等)定位数据,得到的是符合这个选择器的一个结果(是一个bs4类型数据)
text:					# bs4类型数据中提取标签内的内容,结果为str
attrs					# 从bs4类型数据中提取标签内容属性值,结果为str

'''
四大bs4类型数据

1. BeautifulSoup        HTML中的document
2. Tag                  HTML中的标签元素
3. NavigableString 		HTML标签中的文本内容
4. Comment				HTML中的注释内容
'''

更多详细用法可参考 爬虫 之 BeautifulSoup4 基础教程 。


下面是我爬取的代码过程:

import requests
from bs4 import BeautifulSoup
import csv

a, b, c, d, e = [], [], [], [], []

for j in range(1, 11):
    URL = f'https://www.chinanews.com.cn/scroll-news/news{j}.html'
    response = requests.get(url=URL)
    if response.status_code == 200:
        response.encoding = 'utf-8'
        soup = BeautifulSoup(response.text, 'html.parser')
        li_list = soup.select(
            'body > div.w1280.mt20 > div.content-left > div.content_list > ul > li')
        for i in li_list:
            if i.select_one('li > div.dd_lm > a') != None:
                new_type = i.select_one('li > div.dd_lm > a').text
                a.append(new_type)
                new_title = i.select_one('li > div.dd_bt > a').text
                b.append(new_title)
                new_href = 'https://www.chinanews.com.cn' + i.select_one('li > div.dd_bt > a').attrs['href']
                c.append(new_href)
                news_time = i.select_one('li > div.dd_time').text
                d.append(news_time)
for i in range(len(a)):
    e.append([a[i], b[i], c[i], d[i]])

f = open(r'C:UsersAdministratorDesktop最新新闻.csv', 'w', encoding='utf-8', newline='')
m = csv.writer(f)
m.writerows(e)
f.close()

运行结果:

csv数据内容:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号