jupyter notebook爬取网页

urllib发送请求

以百度为例
from urllib import request

url = "https://www.baidu.com" #获取响应

res = request.urlopen(url)

print(res.info())#响应头

print(res.getcode())#状态码 2xx(正常) 3xx(转发)4xx(404) 5xx(服务器内部错误)

print(res.geturl())#返回响应地址
utf-8
html = res.read()
html = html.decode("utf-8")
print(html)
反爬虫(以大众点评为例)

添加header信息

url = "https://www.dianping.com" #获取响应
header={
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
req = request.Request(url,headers=header)
res = request.urlopen(req)
print(res.info())#响应头
print(res.getcode())#状态码 2xx(正常) 3xx(转发) 4xx(404) 5xx(服务器内部错误)
print(res.geturl())#返回响应地址

使用了request

request发送请求

import requests
url = "https://www.baidu.com"
res = requests.get(url)
print(res.encoding)
print(res.headers) #如果里面没有'Content-Type' ,encoding = utf-8  有Content-Type的话,如果设置了charset,就以charset为准,没有设置就是ISO-8859-1
print(res.url)

运行结果

ISO-8859-1
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Sun, 05 Apr 2020 05:50:23 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:24:33 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}
https://www.baidu.com/
res.encoding = "utf-8"
print(res.text)

运行结果

在这里插入图片描述

反爬虫(以大众点评为例)

添加header信息

import requests
url = "https://www.dianping.com"
header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
res = requests.get(url,headers=header)
print(res.encoding)
print(res.headers) #如果里面没有'Content-Type' ,encoding = utf-8  有Content-Type的话,如果设置了charset,就以charset为准,没有设置就是ISO-8859-1
print(res.url)
print(res.status_code)
print(res.text)

BuautifulSoup4解析内容

四川卫健委为例

from bs4 import BeautifulSoup
import requests
url = 'http://wsjkw.sc.gov.cn/scwsjkw/gzbd/fyzt.shtml'
res = requests.get(url)
res.encoding = 'utf-8'
html = res.text
soup = BeautifulSoup(html)#封装类
soup.find('h2').text
a = soup.find('a')
print(a)
print(a.attrs)
print(a.attrs['href'])

运行结果

<a href="/scwsjkw/gzbd01/2020/4/6/2d06e73d4ee14597bb375ece4b6f02ac.shtml" target="_blank"><img alt="我省新型冠状病毒肺炎疫情最新情况(4月..." src="/scwsjkw/gzbd01/2020/4/6/2d06e73d4ee14597bb375ece4b6f02ac/images/b1bc5f23725045d7940a854fbe2d70a9.jpg
"/></a>
{'target': '_blank', 'href': '/scwsjkw/gzbd01/2020/4/6/2d06e73d4ee14597bb375ece4b6f02ac.shtml'}
/scwsjkw/gzbd01/2020/4/6/2d06e73d4ee14597bb375ece4b6f02ac.shtml
url_new = "http://wsjkw.sc.gov.cn" + a.attrs['href'] #利用网址公共部分加href拼装出新的url地址
#通过这种方式获取里面所有标签
#url_new#这里获取的是最新地址
res = requests.get(url_new)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text)
contest = soup.find('p')
print(contest)

运行结果
在这里插入图片描述

re解析内容(Regular Expression)

python自带的正则表达式模块

re.search(regex,str)
1.在str中查找满足条件的字符串,匹配不上返回None
2.对返回结果可以分组,可以在字符串内添加小括号分离数据
groups()
group(index) 返回分组内容

import re
text = contest.text
#print(text)
patten = "新增(\d+)例确诊病例"
res = re.search(patten,text)
print(res)

运行结果
在这里插入图片描述

在这里插入图片描述

正则表达式的补充

爬取腾讯数据

如何处理腾讯历史数据列表的接口
请用最新的接口地址

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值