爬虫就是把网页上的内容获取下来,存到你想要的地方。需要用到的基本库有requests和BeautufulSoup4。本文简要概述两个库的一些常用函数的用法,并从中国新闻网爬取即时新闻并保存在csv中。
安装pip install requests pip install beautifulsoup4导入
import requests from bs4 import BeautifulSouprequests的用法
# 第一步:发送请求
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数据内容:



