先是要引用的库的作用:
import urllib.request,urllib.error #制定url,获取网页数据
import _sqlite3 #进行sqlite数据库操作
from bs4 import BeautifulSoup #网页解析,获取数据
import re #正则表达式,进行文字匹配
import xlwt #进行excel操作
第一步就是获取网页
def askURL(url):
head={
"User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 89.04389.114 Safari/537.36"
}
request = urllib.request.Request(url,headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
print(html)
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
return html
然后就是bs4获取网页内容的方法了
先是生成bs类型
一。遍历
bs = BeautifulSoup(html,“html.parser”)
1.可以用tag 标签查找
bs.head 只能拿到第一个内容
2.标签里的内容 (字符串)
bs.head.string 获取标签中的内容
bs.a.attrs 获取标签中的属性
comment
//获取到注释中的内容 不会加上注释
bs.head.contents 遍历标签中的所有内容
二。搜索
字符串过滤 完全匹配的内容
1.bs.find_all(“a”) 查所有的a标签
正则表达式搜索
2.bs.find_all(re.compile(“a”))
3.方法:传入一个函数 根据函数的要求经行搜索
def name_is_exits(tag):
return tag.has_attr(“name”)
bs.find_all(name_is_exits)
4.kwargs 参数
bs.find_all(id=“head”)
bs.find_all(class_=True)//有class的
5. text参数
bs.find_all(text = “hao1234”)
bs.find_all(text= [“hao1234”,“sss])
bs.find_all(text = re.compile(”\d"))//文本中有数字
6.limit
bs.find_all(“a”,limit=3)
7选择器 css
bs.select("#dd") id
bs.select(".sss") 类
bs.select(“head > title”) 子标签查找
list = bs.select(".mnav ~ . bri") 兄弟标签
list[0].get_text()获取内容