https://www.cbaleague.com/data/#/leaders%E8%BF%99%E4%B8%AA%E6%98%AF%E9%93%BE%E6%8E%A5
整个爬取过程:
获取数据
1.通过url发起请求
解析数据
2.服务器返回的数据放入一个Response对象中
3.将数据转换为字符串
筛选数据
4.通过BeautifulSoup把字符串解析为BeautifulSoup对象
5.有两种情况:
(1)使用find()方法得到Tag对象
(2)使用find_all()方法得到ResultSet对象,实际上就是list/dict
python还是非常有趣并且有用的,就拿爬虫来说,如果用得好,那么在平时的生活工作中就是一大助力;当然它也是一柄双利剑,爬取数据要遵守相应的规则,知道哪些是不能爬的,不然也可能给自己带来麻烦。
其次就是通过这次的记录,让原本对于BeautifulSoup模糊的认识更加清晰。学习知识要知其然,也应该知其所以然,这条路还有很长要走。
使用BeautifulSoup库爬取网页中嵌套在两个div标签内的数据,可以按照以下步骤操作: 1. 导入requests和BeautifulSoup库:
import requests
from bs4 import BeautifulSoup
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
其中,url
为目标网页的链接,response
对象包含了该网页的所有信息,调用response.text
可以获取网页源代码,使用BeautifulSoup
可以将其转化为Soup
对象,方便提取数据。 3. 通过find
或find_all
方法找到嵌套两个div标签内的数据:
data = soup.find('div', {'class': 'xxx'}).find('div', {'class': 'xxx'}).get_text()
其中,find
方法可以找到第一个匹配的标签,find_all
可以找到所有匹配的标签,括号中的第一个参数表示要找的标签名,第二个参数为该标签的属性。get_text()
方法可以获取标签内的文本。如上例子中,表示找到class为'xxx'的第一个div标签,再在其中找到class为'xxx'的第一个div标签,并获取其中的文本。如果要获取标签的属性,可以使用该标签的attrs
属性,如:
href = soup.find('a', {'class': 'link'})['href']
表示找到class为'link'的第一个a标签,并获取其href属性。 4. 将获取到的数据存储在列表或字典中,便于后续操作:
result_list = []
for item in items:
info = {}
info['title'] = item.find('div', {'class': 'title'}).get_text()
info['content'] = item.find('div', {'class': 'content'}).get_text()
result_list.append(info)
以上代码可以找到所有class为'item'的标签,在其中找到class为'title'和'class'为'content'的标签,并将其存储在一个字典中,最后将字典存储在列表中。 5. 对数据进行处理和输出:
for info in result_list:
# do something
对每个字典进行循环,进行数据处理,如存储到数据库或输出到文件等。 注意,在爬取网页时需要注意反爬措施,可以使用代理IP、User-Agent等方法规避反爬限制。