准备工作: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)
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)
clsTag=soup.select('.lb')
print(clsTag)
#如果选择标签为空[],用len判断舍去
if len(clsTag)>0:
print(clsTag)
#.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 datetime
dateStr='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 requests
res=requests.get(url)
import json
jd=json.loads(res.text.strip('var data='))
jd['result']['key 1']['key 2']
#用正则表达式取出特定字符串
import re
targetStr='abc-(anyname).xyz'
m=re.search('abc-(.+).xyz',targetStr)
m.group(0) //整个匹配字符串
m.group(1) // 内部字符串anyname
这篇文章只要有Python基础,懂得简单方法,就可以实现数据抓取工作。
原视频地址:
https://ke.qq.com/course/161451