欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  编码问题
 
  方法1. response设置编码方式
 
  response.encoding = ‘gbk’
 
  此时text输出为中文
 
  print(response.text)
 
  方法2. content内容进行解码
 
  print(response.content.decode(‘gbk’))
 
  上节说过当你的爬虫不能被服务器识别为真正的浏览器访问时,服务器则不会给你返回正确的信息,这个时候就必须对爬虫代码进行伪装。
 
  HTTP部分请求头部(HEADER)包含:
 
  Connection: keep-alive
 
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
 
  Accept-Encoding: gzip, deflate, br
 
  Accept-Language: zh-CN,zh;q=0.9
 
  Cache-Control: max-age=0
 
  Host:
 
  Upgrade-Insecure-Requests: 1
 
  User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.
 
  设置headers
 
  headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’,
 
  ‘Referer’: ‘
 
  ‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’,
 
  ‘Accept-Encoding’: ‘gzip, deflate, br’,
 
  ‘Accept-Language’: ‘zh-CN,zh;q=0.9’
 
  }
 
  response = requests.get(url = url, headers = headers)
 
  login_url = ‘
 
  设置登录名与密码
 
  form_data = {‘username’:‘’, ‘password’:'’}
 
  headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’,
 
  ‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’,
 
  ‘Accept-Encoding’: ‘gzip, deflate, br’,
 
  ‘Accept-Language’: ‘zh-CN,zh;q=0.9’
 
  }
 
  response = requests.post(login_url, data=form_data, headers=headers)
 
  先了解下HTML的基本结构:
 
  <name attribute = “xxxx” …> content 依次是标签名 属性 属性值 若干个属性 内容-内容可以是单纯内容,也可以是子标签
 
  BeautifulSoup将 HTML 文档转换成一个树形结构,每个节点都是 Python 对象,所有对象可以归纳为4种:
 
  BeautifulSoup
 
  代表整个HTML文档的对象,大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性。
 
  Tag 就是标签
 
  直接使用BeautifulSoup的对象bs.xxx就可以访问到第一个名字为xxx的标签对象
 
  就是html文档中从到一个标签的完整的内容。然后可以.name 获得标签名字,用.string获得标签的内容,注意如果标签里面包含子标签,那么.string似乎不起作用,可以用.contents获取子标签列表,注意是列表形式,主要是这几个属性,还有很多其他的属性。
 
  NavigableString
 
  就是前面Tag下的string
 
  Comment
 
  String?
 
  查找节点的主要方法,任意层级下的都可以查找。bs.find_all(“xxx”) 根据名字搜索,搜索名字为xxx的标签,不仅可以传入字符串,还可以传入正则式re.complie(“xxx”),列表,还有过滤器方法
 
  还可以传入kwargs参数,指定属性进行匹配,比如:
 
  tag[‘xxx’] 即可
 
  使用时要注意的,有可能页面比较复杂,标签层级关系没看清楚,导致找不到东西,要注意

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h60095.shtml