爬虫python爬取页面请求_python爬虫爬取get请求的页面数据代码样例

#!/usr/bin/env python#-*- coding:utf-8 -*-#导包

importurllib.requestimporturllib.parse#如下两行代码表示忽略https证书,如果请求不是https则该两行代码可不用。

importssl

ssl._create_default_https_context=ssl._create_unverified_contextif __name__ == "__main__":"""指定爬取的网页URL"""url= 'https://www.baidu.com'

"""通过urlopen函数向指定url发起请求,返回响应对象"""response=urllib.request.urlopen(url)"""通过调用相应对象中的read函数,反馈响应回客户端的数据值(爬到的数据)"""data= response.read() #获取响应中的数据值(字节类型)

#data = response.geturl() # 获取请求的url

#data = response.getcode() # 获取响应状态码

#data = response.headers() # 获取响应头信息

#data = str(data, encoding="utf-8") # 方法一、使用str()函数将bytes类型转换为str类型

#data = bytes.decode(data) # 方法二、使用bytes.decode()函数将bytes类型转换为str类型

data = response.read().decode() #方法三、decode()将响应中字节(byte)类型的数据值转成字符串类型

with open('./baidu.html', 'w') as e: #使用IO操作将data表示的数据值以'w'权限的方式写入到baidu.html文件中

e.write(data)print('写入文件完毕')"""1、爬取网络上某张图片数据,且存储到本地

if __name__ == '__main__':

url = 'http://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%9B%BE%E7%89%87&step_word=&hs=0&pn=5&spn=0&di=103290&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=3139953554%2C3011511497&os=282365737%2C413977936&simid=0%2C0&adpicid=0&lpn=0&ln=737&fr=&fmq=1564044690482_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fpic30.nipic.com%2F20130619%2F9885883_210838271000_2.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bgtrtv_z%26e3Bv54AzdH3Ffi5oAzdH3F8AzdH3F9aAzdH3Fbdl0c0lhu9kvac8k_z%26e3Bip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'

response = urllib.request.urlopen(url)

data = response.read() # 因为爬取的是图片数据值(二进制数据),则无需使用decode进行类型转换。

with open('./bird.jpg', 'wb') as e: # 视频、图片等流式数据(二进制数据)使用'wb'进行写入

e.write(data)

print('写入完毕')

2、爬取使用百度根据指定词条搜索到的页面数据(例如爬取词条为‘蔡徐坤’的页面数据)

url的特性:url必须为ASCII编码的数据值。所以我们在爬虫代码中编写url时,如果url中存在非ASCII编码的数据值,则必须对其进行ASCII编码后,该url方可被使用

if __name__ == "__main__":

#原始url中存在非ASCII编码的值,则该url无法被使用。

#url = 'http://www.baidu.com/s?wd=蔡徐坤'

#处理url中存在的非ASCII数据值

url = 'http://www.baidu.com/s?'

#将带有非ASCII的数据封装到字典中,url中非ASCII的数据往往都是'?'后面键值形式的请求参数

param = {

'wd':'蔡徐坤'

}

#使用parse子模块中的urlencode函数将封装好的字典中存在的非ASCII的数值进行ASCII编码

param = urllib.parse.urlencode(param)

#将编码后的数据和url进行整合拼接成一个完整可用的url

url = url + param

#伪装UA

#将浏览器的UA数据获取,封装到一个字典中。该UA值可以通过抓包工具或者浏览器自带的开发者工具中获取某请求,从中获取UA的值

headers={

'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'

}

#自定义一个请求对象

#参数:url为请求的url,headers为UA的值,data为post请求的请求参数(后续介绍)

request = urllib.request.Request(url=url,headers=headers)

#发送我们自定义的请求(该请求的UA已经进行了伪装)

response = urllib.request.urlopen(request)

data = response.read()

with open('./蔡徐坤.html','wb') as e:

e.write(data)

print('写入文件完毕')"""

好的,下面是一个简单的Python爬虫爬取网页数据并解析数据的教程: 1. 确定目标网站和要爬取的信息 首先,需要确定要爬取的网站和要提取的信息。可以使用Python的requests库向网站发送HTTP请求获取HTML源代码,并使用BeautifulSoup库解析HTML文档获取目标数据。 例如,我们要爬取CSDN博客的文章标题和链接,可以先打开CSDN博客主页,右键查看网页源代码,找到文章标题和链接所在的HTML标签。 2. 发送HTTP请求获取HTML源代码 接下来,使用Python的requests库向网站发送HTTP请求,获取HTML源代码。 ``` import requests url = 'https://blog.csdn.net/' response = requests.get(url) html = response.text ``` 3. 解析HTML文档获取目标数据 使用BeautifulSoup库解析HTML文档,获取目标数据。 ``` from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') titles = soup.find_all('div', class_='title') for title in titles: link = title.find('a').get('href') title_text = title.find('a').text.strip() print(title_text, link) ``` 上述代码中,通过`find_all`方法找到所有class属性为"title"的div标签,然后在每个div标签中找到第一个a标签,获取链接和标题文本。 4. 完整代码 ``` import requests from bs4 import BeautifulSoup url = 'https://blog.csdn.net/' response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') titles = soup.find_all('div', class_='title') for title in titles: link = title.find('a').get('href') title_text = title.find('a').text.strip() print(title_text, link) ``` 以上就是一个简单的Python爬虫爬取网页数据并解析数据的教程。需要注意的是,在爬取网站数据时要遵守网站的爬虫协议,避免被网站封禁IP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值