python 爬虫 beautifulsoup 和 requests 的使用
安装bs4 和 requests
pip install requests bs4
导入bs4 和 requests
import requests
from bs4 import BeautifulSoup
例子:
爬取NBA球员的信息
# 新建“exerc3”Python文件完成作业:NBA球员数据网站如下:
# “http://data.sports.sohu.com/nba/nba_players_rank.php?order_by=points&spm=smpc.fb-nba-home.top-dc.2.1620824904040nf6byr7”,
# 爬取前50名球员所有的数据打包成JSON数据或CSV数据写入到文件中。
# pip install requests bs4
# 第一步,导入需要用到的库
import requests
from bs4 import BeautifulSoup
# 第二步,请求网页内容
url = "http://data.sports.sohu.com/nba/nba_players_rank.php?order_by=points&spm=smpc.fb-nba-home.top-dc.2.1620824904040nf6byr7" # 需要请求的网页的链接
html = requests.get(url) # get方式请求数据
# print(html.status_code) # 查看请求的状态码(200表示请求正常)
html.encoding = html.apparent_encoding # 设置编码,防止由于编码问题导致文字错乱
# print(html.text) # 查看请求到的内容
content = html.text
# print(content)
# 第三步,解析你需要的内容
# 解析器自带的是html.parser,也可以用lxml,兼容性更好,不过要单独安装第三方库
soup = BeautifulSoup(content, "html.parser")
# 1 按标签名查找标签
#使用find方法找到里面标签为a标签,文本内容为读书的标签(注意这里是完全匹配)
#
# 使用select CSS 选择器选择carousel 这个class内容,并且是里面a标签的内容,注意是一个列表内容
# 使用write将这些爬取下来的内容一行一行的写入文件中
# coding=UTF-8
filename = 'NBA.html'
with open(filename, 'w', encoding='utf-8') as f: # 打开文件必须设置encoding='utf-8'编码格式 ,否则无法写入正确格式导致写不进去
for i in soup.select(".table01 tr"):
if i.select("td"):
trs = i.select("td")#获取所有tr节点
# print(trs)
# 便利trs数组
for tr in trs:
# 获取每一个tr里面的内容
print(tr)
tr_text = tr.get_text()
# print(tr.get_text())
f.write(tr_text+ "\n")
# f.write("['link':{},'name':{}] \n".format(a[0].get("href"),a[1].getText()))
# # 使用find方法找到里面标签为a标签,文本内容为读书的标签(注意这里是完全匹配)
# tags = soup.find(name='a', text='读书')