bs4模块(BeautifulSoup)
导入requests模块
import requests
from bs4 import BeautifulSoup
bs4模块能够从html或者xml提取数据:
URL = 'https://movie.douban.com/top250'
# 将爬虫伪装成浏览器
Headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
resp = requests.get(url=URL,headers=Headers)
# 打印状态码,如果状态码是200表示爬虫可以在该网站上使用
print(resp.status_code)
# 打印爬虫获取的数据
print(resp.text)
静态页面和动态页面
网页分为静态页面和动态页面:
静态页面:内容是写死的,除非人为地进行修改,否则这个页面的内容是一成不变的。
动态页面:内容不是写死的,使用某种特殊的技术(JavaScript)使数据通过某种方式显示在页面中。
requests得到的结果使静态页面的结果。
BeautifulSoup(网页源码解析器)将字符串类型的源代码转换为bs4类型。
bs4模块提供了一系列提取数据的方法,这些方法的操作对象的bs4类型的数据。
URL = f'https://www.chinanews.com.cn/scroll-news/news{page}.html'
# 这里的Header是字典的类型
Header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
resp = requests.get(url=URL, headers=Header)
# 获取网页的前端代码
soup = BeautifulSoup(resp.text, 'html.parser')
print(soup)
按网页前端代码选择器爬取所需内容
select:根据CSS选择器(标签、class、id等)定位数据,得到的是符合这个选择器的所有结果,拿到的结果整体是列表,列表中每个元素是一个bs4类型的数据。
select_one:根据CSS选择器(标签、class、id等)定位数据,得到的是符合这个选择器的结果,是一个bs4类型的数据。
text:从bs4类型数据中提取标签内的内容。
arrtrs:从bs4类型数据中提取标签内容属性值,结果是str。
new_herf = 'https://www.chinanews.com.cn' + i.select_one('li>.dd_bt>a').attrs['href']
这里体现的是href获取标签内容的属性值,并且可以进行字符串操作。
new_title = i.select_one('li>.dd_bt>a').text
这里体现的是text获取标签的内容。