爬虫-Day2-bs4数据解析
1.requests设置浏览器信息
-
418现象: 网页对应的服务器做了身份验证,必须浏览器才能返回数据。如果不是浏览器发送的请求就会返回418
-
解决方案:设置请求的请求头中的用户信息为一个浏览器信息
headers = { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36' } response = requests.get('https://movie.douban.com/top250', headers=headers)
2.bs4基本用法
-
创建网页对应的BeautifulSoup对象
-
BeautifulSoup(网页数据, 解析器名称)
网页数据 - 需要解析的网页源代码
解析器名称 - lxmlhtml = open(‘data.html’, encoding=‘utf-8’).read()
soup = BeautifulSoup(html, ‘lxml’)
-
-
获取标签
-
soup对象.select(css选择器) - 在整个网页中,获取css选择器选中的所有标签,返回值是列表,列表中的元素是标签对象
soup对象.select_one(css选择器) - 在整个网页中,获取css选择器选中的标签中的第一个标签,返回值是标签对象标签对象.select(css选择器) - 在指定标签中,获取css选择器选中的所有标签,返回值是列表,列表中的元素是标签对象
标签对象.select_one(css选择器) - 在指定标签中,获取css选择器选中的标签中的第一个标签,返回值是标签对象result = soup.select('p') result = soup.select_one('p')
-
-
3.获取标签内容、获取标签属性
-
获取标签内容: 标签对象.text
a = soup.select_one('div.c1>a') print(a.text)
-
获取标签属性:标签对象.attrs[属性名]
a = soup.select_one('div.c1>a') print(a.attrs['href'])
-