Python数据抓取

准备工作: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 requests
res=requests.get('http://www.baidu.com/')
res.encoding='utf-8'
print(res.text)

#解析网页源文件

from bs4 import BeautifulSoup
soup=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 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

#构造link text的list
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值