Python爬虫

Python爬虫

	爬虫,即网络爬虫,可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来
使用正则表达式爬取数据
	利用正则表达式爬取数据
		 re.match(pattern, string[, flags])
		 re.search(pattern, string[, flags])
		 re.split(pattern, string[, maxsplit])
		 re.findall(pattern, string[, flags])
		 re.finditer(pattern, string[, flags])
		 re.sub(pattern, repl, string[, count]) 
		 re.subn(pattern, repl, string[, count])
		 re.compile(string[,flag])

正则表达式语法规则

		. 匹配除换行符"\n"外的字符
		+ 匹配前一个字符1次或无限次
		?匹配前一个字符0次或1次
		\d 数字
		\s 空白字符
		\w 数字和字母
		大写的话就是”非”
	获取网页源码
		所需模块
			import urllib.request 

import re
把要执行的程序伪装成浏览器

headers = {
        "User-Agent": "Mozilla/5.0(Windows NT 10.0;WOW64;rv:50.0)  AppleWebKit/537.36 (KHTML, like Gecko) Gecko/20100101 Firefox/50.0 Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3",
        'Connection': 'keep-alive'}
		获取要爬的网址打开读取
response = urllib.request.urlopen("http://www.baidu.com",headers=headers).read()
		给爬下来的源码解码
response=response.decode('utf-8')
	获取源码里想要的内容
pattern = re.compile(r'\d+') 
concent=re.findall(pattern, 'one11two2three3four4')

requests 简介

		requests是Python的一个HTTP客户端库,跟urllib类似, python的标准库urllib提供了大部分需要的HTTP功能,但是一个简单 的功能就需要一大堆代码。
区别
		不需要解码、代码少
	r.url -获取url地址
	r.text -获取响应内容
	r.content -获取响应内容
	r.encoding -获取或设置网页编码
	都会自动内容转码,如果有乱码就用r.content

使用bs4爬取数据(美丽泡泡)

  • 简介

     	BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索、修 改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因 为简单,所以不需要多少代码就可以写出一个完整的应用程序。 
     	BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。
     	BeautifulSoup已成为和lxml、html6lib一样出色的python解释器,为用户 灵活地提供不同的解析策略或强劲的速度。
    
  • 查找

     	find
     		查找给定第一个标签
     	find_all
     		查找给定的所有标签
    
  • 常用方法

     	.contents   .children属性 -直接子节点(儿子)
     	.descendants属性 -所有子孙节点(所有后代)
     	.string属性 -获取文本
     	.parent .parents -父节点
     	.next_sibling .previous_sibling -兄弟节点
     .prettify()
     	让源码好看点。
     .getText()
     	获取标签内容
     所需模块
     	import requests
    

from bs4 import BeautifulSoup 爬取网页

r = requests.get("http://www.baidu.com",headers={'User-Agent': 'Mozilla/4.0'}) 
soup = BeautifulSoup(r.text,"html.parser")
			html.parser:解析器
	爬取源码里需要的内容
li=soup.find_all("li")
			网页里所有的li标签
		返回的是列表,利用循环遍历将每个li标签.getText()(获取内容)

你可能感兴趣的:(python,正则表达式)