python学习之爬虫网络数据采集

Python 给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是
urllib、requests这两个模块。

网络数据采集之urllib

urllib库
官方文档地址:https://docs.python.org/3/library/urllib.html
urllib库是python的内置HTTP请求库,包含以下各个模块内容:
(1)urllib.request:请求模块
(2)urllib.error:异常处理模块
(3)urllib.parse:解析模块
(4)urllib.robotparser:robots.txt解析模块

urllib库:urlopen
urlopen进行简单的网站请求,不支持复杂功能如验证、cookie和其他HTTP高级功能,
若要支持这些功能必须使用build_opener()函数返回的OpenerDirector对象。

urllib库:User-Agent伪装后请求网站
很多网站为了防止程序爬虫爬网站照成网站瘫痪,会需要携带一些headers头部信息才能
访问, 我们可以通过urllib.request.Request对象指定请求头部信息

网络数据采集之requests库

requests库
requests官方网址: https://requests.readthedocs.io/en/master/
Requests is an elegant and simple HTTP library for Python, built for human
beings.
request方法汇总

Response对象包含服务器返回的所有信息,也包含请求的Request信息。

reqursts.py

from urllib.error import HTTPError

import requests

def get():
    # get方法可以获取页面数据,也可以提交非敏感数据
    #url = ‘http://127.0.0.1:5000/‘
    #url = ‘http://127.0.0.1:5000/?username=fentiao&page=1&per_page=5‘
    url = ‘http://127.0.0.1:5000/‘
    try:
        params = {
            ‘username‘: ‘fentiao‘,
            ‘page‘: 1,
            ‘per_page‘: 5
        }
        response = requests.get(url, params=params)
        print(response.text, response.url)
        #print(response)
        #print(response.status_code)
        #print(response.text)
        #print(response.content)
        #print(response.encoding)
    except HTTPError as e:
        print("爬虫爬取%s失败: %s" % (url, e.reason))

def post():
    url = ‘http://127.0.0.1:5000/post‘
    try:
        data = {
            ‘username‘: ‘admin‘,
            ‘password‘: ‘westos12‘
        }
        response = requests.post(url, data=data)
        print(response.text)
    except HTTPError as e:
        print("爬虫爬取%s失败: %s" % (url, e.reason))

if __name__ == ‘__main__‘:
    get()
    #post()

高级应用一: 添加 headers

有些网站访问时必须带有浏览器等信息,如果不传入headers就会报错。
headers = { ‘User-Agent‘: useragent}
response = requests.get(url, headers=headers)
UserAgent是识别浏览器的一串字符串,相当于浏览器的身份证,在利用爬虫爬取网站数据时,
频繁更换UserAgent可以避免触发相应的反爬机制。fake-useragent对频繁更换UserAgent提供
了很好的支持,可谓防反扒利器。
user_agent = UserAgent().random

import requests
from fake_useragent import  UserAgent

def add_headers():
    # headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0‘}
    #UserAgent实质上是从网络获取所有的用户代理, 再通过random随机选取一个用户代理。
    #https://fake-useragent.herokuapp.com/browsers/0.1.11
    ua = UserAgent()
    #默认情况下, python爬虫的用户代理是python-requests/2.22.0。
    response = requests.get(‘http://127.0.0.1:5000‘, headers={‘User-Agent‘: ua.random})
    print(response)

if __name__ == ‘__main__‘:
    add_headers()

高级应用二: IP代理设置

在进行爬虫爬取时,有时候爬虫会被服务器给屏蔽掉,这时采用的方法主要有降低访问时
间,通过代理IP访问。ip可以从网上抓取,或者某宝购买。
proxies = { "http": "http://127.0.0.1:9743", "https": "https://127.0.0.1:9743",}
response = requests.get(url, proxies=proxies)
百度的关键词接口:
https://www.baidu.com/baidu?wd=xxx&tn=monline_4_dg
360的关键词接口:http://www.so.com/s?q=keyword

import requests
from fake_useragent import UserAgent

ua = UserAgent()
proxies = {
    ‘http‘: ‘http://222.95.144.65:3000‘,
    ‘https‘: ‘https://182.92.220.212:8080‘
}
response = requests.get(‘http://47.92.255.98:8000‘,
                        headers={‘User-Agent‘: ua.random},
                        proxies=proxies
                        )

print(response)
#这是因为服务器端会返回数据: get提交的数据和请求的客户端IP
#如何判断是否成功? 返回的客户端IP刚好是代理IP, 代表成功。
print(response.text)

原文地址:https://blog.51cto.com/13810716/2486979

时间: 2024-08-21 04:20:39

python学习之爬虫网络数据采集的相关文章

python学习之爬虫一

一,爬虫原理: 通过模拟浏览器的行为 自动从网上获得需要的数据 二,爬虫的流程 1,发送request请求给某个URL : 2,获得返回的response 解析 得到需要的数据 再根据自己的需要进行各种处理 三,具体的实现代码 3.1发送request请求分2种:get 和 post  ,这里使用的是python3 使用的模块是requests ,可使用pip3 install requests(pip也行 只要你的python安装目录下的scripts文件夹里既有pip.exe 又有pip3.

Python学习之==>Socket网络编程

一.计算机网络 多台独立的计算机通过网络通信设备连接起来的网络.实现资源共享和数据传递.在同一台电脑上可以将D盘上的一个文件传到C盘,但如果想从一台电脑传一个文件到另外一台电脑上就要通过计算机网络 二.网络编程 所谓网络编程就是通过某种计算机语言来实现不同设备间的资源共享和信息传递.计算机网络的创造比计算机本身的意义更大,否则我们现在还玩着单机游戏,也没有现在蒸蒸日上的互联网行业. 1.OSI模型 OSI模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架.OSI模型把网络通信的

python学习之爬虫(一) ——————爬取网易云歌词

接触python也有一段时间了,一提到python,可能大部分pythoner都会想到爬虫,没错,今天我们的话题就是爬虫!作为一个小学生,关于爬虫其实本人也只是略懂,怀着"Done is better than perfect"的态度硬着头皮开始了这篇文章的撰写!好了,废话不多说! 先说一下今天我们的目的,作为一个音痴但不影响我对于音乐的执着,所以今天我们爬取的是网易云音乐,我们将会通过代码爬取歌词并写入到本地. 作为新手,我很本能就打开页面复制了url,然后用Beautifulsou

python学习笔记-day8-3-【python 网络请求及requests模块】

python的网络请求,主要是进行Http协议类接口调用,进行接口测试等. 一.urllib库,python内嵌的库,不太好用. from urllib import request,parse import json # url = 'http://baidu.com' # req = request.urlopen(url) #打开一个url # content = req.read().decode() # fw = open('nnzhp.html', 'w', encoding='ut

python学习之爬虫理论总结

通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网 页下载到本地,形成一个互联网内容的镜像备份.通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着 整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果搜索引擎如何获取一个新网站的URL: 新网站向搜索引擎主动提交网址: 在其

python学习笔记11 ----网络编程

网络编程 网络编程需要知道的概念 1.网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. 网络(OSI)的7层模型: 应用层--->为应用程序提供网络通信服务 表示层--->数据表示 会话层--->主机间通信(两个应用进程间) 传输层--->端到端的连接,隔离网络的上下层协议,使得网络应用与下层协议无关 网络层--->寻找最优路径,转发数据包 数据链路层---&

Python学习笔记之网络编程

操作MySQL # 断言 assert(1==1) ############################################################################# ******************************************************************** # 创建Connection * ------------------------------------------------------------

《Python学习之路 -- 网络编程》

在前面已经提到过,互联网的本质就是一堆协议,协议就是标准,比如全世界人通信的标准是英语,所有的计算机都学会了互联网协议,那么所有的计算机就可以按照统一的标准去收发信息完成通信了. 作为普通开发人员的我们,写的软件/程序都是处于应用层上的,然而,想要让软件接入互联网,就必须得通过传输层,也就是必须遵循TCP协议或者UDP协议.这是两个非常复杂的协议,如果遵循原生的协议,那么必然会大大降低效率,所以就有了socket抽象层的概念.socket是应用层与TCP/IP协议族通信的软件抽象层,它是一组接口

Python学习---网页爬虫[下载图片]

爬虫学习--下载图片 1.主要用到了urllib和re库 2.利用urllib.urlopen()函数获得页面源代码 3.利用正则匹配图片类型,当然正则越准确,下载的越多 4.利用urllib.urlretrieve()下载图片,并且可以重新命名,利用%S 5.应该是运营商有所限制,所以未能下载全部的图片,不过还是OK的 URL分析: 源码: #coding=utf-8 import re import urllib def getHtml(url): page=urllib.urlopen(u