准备工作:Chrome,Python(要安装 requests,BeautifulSoup4)
安装 requests:pip install requests, pip install BeautifulSoup4, pip install jupyter.
cmd: jupyter notebook(开发在这个页面完成)
在新开页面中,选择 new-》Python 3. 进去 coding 页面。
Requests 提供 post, get, put, delete 等方法获取网络资源。
一般大的门户网站页面内容很多,显示内容分在不用的子页面中。用 chrome 就可以找到你想要的页面内的信息是从哪个子页面 (网址) 返回来的。右键点击页面空白,inspect->networking, 刷新页面,就会看到许多链接。找到你想要的链接地址信息,进行分析。进入目标页面,可以用下方工具页面坐上的小箭头,来分析页面。
code:
#获取网页源文件
- import requestsres=requests.get('http://www.baidu.com/')res.encoding='utf-8'print(res.text)
#解析网页源文件
- from bs4 import BeautifulSoupsoup=BeautifulSoup(res.text,'html.parser')
# text 为标签内容
- print(soup.text)
#选取所有 h1 标签的元素,h1 是 list
- title=soup.select('title')print(title[0].text)
#选取所有 a 标签元素
- alink=soup.select('a')print(alink)for link in alink:
#获取标签的属性值 ['href']
- print(link['href'],link.text,sep=',')
#选择 alink 下前 5 个 item
- alink[0:5]
#删除最后一个 item
- alink[:-1]
#构造 link text 的 list
- allLink = []
- for link in alink: allLink.append(link.text.strip())
# 同上功能 [link.text.strip() for link in allLink]
#链接所有 alink 下 item.text, '*'为分隔符
- '*'.join(allLink)
#选择 id 为 lg 的标签
- idTag=soup.select('#lg')print(idTag)
#选择 class 为 lb 的标签
- clsTag=soup.select('.lb')print(clsTag)
#select 返回对象仍是 BeautifulSoup 对象,所以可以继续使用 select 方法,选择 div 的 class 为对象集合,进行详细分析。
#如果选择标签为空 [], 用 len 判断舍去
- if len(clsTag)>0:print(clsTag)
#当标签有嵌套时,想获得外层标签内容和内层标签内容, contents 方法返回内容和内部嵌套标签的列表
#.contents[0] 表示外层标签包含的内容,.strip() 去除空格 \ t, strip('xxx') 移除 xxx, 类同 lstrip(), rstrip()
- clsTag[0].contents[0].strip()
#当要选择嵌套标签内的标签时,下面语法就是选择 class=lb 的标签,标签内 span,内 a 的标签
- clsTag=soup.select('.lb span a')from datetime import datetimedateStr='2017年2月17日 15:56:30'
#字符串转换成时间
- dt=datetime.strptime(dateStr,'%Y年%m月%d日 %H:%M:%S')
#时间转换成字符串
- dateStr=dt.strftime('%Y-%m-%d %H:%M:%S')print(dt)print(dateStr)
#读取 JavaScript 返回数据 Json
- import requestsres=requests.get(url)import jsonjd=json.loads(res.text.strip('var data='))jd['result']['key 1']['key 2']
#用正则表达式取出特定字符串
- import retargetStr = 'abc-(anyname).xyz'm = re.search('abc-(.+).xyz', targetStr) m.group(0) //整个匹配字符串m.group(1) // 内部字符串anyname
这篇文章只要有 Python 基础,懂得简单方法,就可以实现数据抓取工作。
原视频地址:
https://ke.qq.com/course/161451
#构造 link text 的 list
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/02-18/17277591.html