python让繁琐工作自动化 第12章 web页面抓取

1.requests  模块抓取页面

requests.get()  //下载一个网页

status_code  通过检查response对象的status_code属性,了解页面是否请求成功,若等于requests.code.ok,表明状态码为200,下载成功

若请求成功,页面将作为字符串,保存在response对象的text变量中

转码

2.检查页面错误:raise_for_status()

import requests
res=requests.get('https://www.cnblogs.com/nieliangcai/p/1.html')
try:
    res.raise_for_status()
except Exception as exc:
    print('there was a problem: %s .' % (exc))

 

 

3.将请求的页面内容保存到本地

必须用’wb’写二进制模式打开文件,即使页面是纯文本,也需要写入二进制数据,目的是为了保存该文本中的’unicode编码’

Iter_content() 方法在循环的每次迭代中,返回一段内容,每一段为bytes数据,需指定一段包含多少字节,通常是10万

 

4.html创建一个beautifulsoup对象

从本地向beautifulsoup传递一个file对象,加载本地的html文件

import bs4
example=open('example.html')
exampleSoup=bs4.BeautifulSoup(example)
print(type(exampleSoup))

 

4.用select元素寻找元素

 

import bs4
example=open('example.html')
exampleSoup=bs4.BeautifulSoup(example.read())
elems=exampleSoup.select('#author')   #返回一个列表
print(type(elems))                   
print(len(elems))                          #只有一个tag对象
print(type(elems[0]))             
print(elems[0].getText())             #getText 返回元素的文本 ,访问开始和结束之间标签的文本
print(str(elems[0]))                  #将元素传递给str() 返回一个字符串,包括开始和结束标签,以及该元素的文本
print(elems[0].attrs)                 #attrs返回字典,包括id属性,及id属性的值

 ------------------------------------------------------------

import bs4
example=open('example.html')
exampleSoup=bs4.BeautifulSoup(example)
pElems=exampleSoup.select('p')
print(len(pElems))
for i in range(len(pElems)):
    print(str(i)+' : '+str(pElems[i]))
    print('文本: '+pElems[i].getText())
    print()

 

 

posted @ 2019-04-02 14:59  超级无敌大帅哥一个  阅读(237)  评论(0编辑  收藏  举报