项目案例
from http import cookiejar import urllib3 import urllib url = "http://www.baidu.com" print("第一种方法") response1 = urllib.request.urlopen(url) print (response1.getcode()) print (len(response1.read())) print("第二种方法") request = urllib.request.Request(url) request.add_header("user-agent","Mozilla/5.0") response2 = urllib.request.urlopen(request) print(response2.getcode()) print(len(response2.read())) print("第三中方法") cj = cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) urllib.request.install_opener(opener) response3 = urllib.request.urlopen(url) print(response3.getcode()) print(cj) print(response3.read()) 网页解析器从网页中提取出有价值的工具
几种网页解释器
BeautifulSoup是第三方解释器,他既可以调用官方自带的html.parser也可以调用lxml
结构化解析
将整个网页文件加载成 结构化解析-DOM(Document Object Model)树(文档-对象模型)
官方定义的网页解析模型
BeautifulSoup4
1.安装 conda install beautifulsoup4
测试安装是否成功
import bs4 print(bs4)语法
1.创建bs对象,文档字符串加载为DOM树
按照DOM树进行搜索
find_all(搜索全部的节点)
find(只搜索第一个节点)
访问节点的 名称、文字、属性
案例
form bs4 import BeautifulSoup #根据HTML网页字符串创建bs对象 soup = BeautifulSoup( html_doc,#HTML文档字符串 \'html.parser\'#HTML解析器 from_encoding = \'utf-8\'#HTML文档编码)
搜索节点(find_all find)
#方法:find_all(name,atters,string) #查找所有为a的节点 soup.find_all(\'a\') #差找所有标签为a的节点 链接符合/view/123.html形式的节点 soup.find_all(\'a\',href=‘/view/123.html’) soup.find_all(\'a\',href=re.complie(r\'/view/\d+\.html\')) #查找所有有标签为div,class为abc,文字为Python的节点 soup.find_all(\'div\',class_=\'abc\',string=\'python\') #class_:_是因为Python关键字有class避免冲突 所以加—访问节点信息
#得到节点:<a href=http://www.likecs.com/\'1.html\'>Pythone</a> #获取查找到的节点的标签 node.name #获取a节点的href属性 node[\'href\'] #获取查找到a节点的链接文字 node.get_text()