首页 > 编程语言 >工具篇:01用python的request爬虫

工具篇:01用python的request爬虫

时间:2024-07-04 19:30:04浏览次数:23  
标签:01 exc python request 爬虫 pcsj msgbox response

工具篇:01用python爬虫

爬虫

爬虫的概念

爬虫我认为就是用代码获取数据
经过我的上网查找得出结论:爬虫是一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。

尝试用python爬虫

用两种爬虫方式第一种是request,第二种scrapy
request的中文是请求的英文
我用request变了一段程序,但在之前刚安装python的小伙伴需要先下在request库,步骤如下:
1.windows+r打开运行框,输入cmd,回车
在这里插入图片描述
或者使用搜索并且输入命令提示符在这里插入图片描述
在这里插入图片描述
回车运行
2.开始下载:输入 pip install request它就会自动下载,如果下载后最后一行不是红色,而且中间有个叫successfully的单词就说明你下载成功了
3.排错:如果你最后的字是红色的,那就说明你下载失败了,有可能是你的pip install语句太老了,需要更新(有的人认为是重装pip语句),可以在命令行中输入pip install -U pip进行升级
经过亿分钟的操作,我们要用request开始编写代码了

import requests
response = requests.post(url)
response.encoding = response.apparent_encoding
print(response.text)

response是响应的意思注意url是网址且当前用的是post,是一种获取方式,而有两种,一种是post,另一种是get,我从网上获取了具体的post()和get()的区别:
(1)get是从服务器上获取数据,post是向服务器传送数据。
(2)对于表单的提交方式,在服务器端只能用Request.QueryString来获取Get方式提交来的数据,用Post方式提交的数据只能用Request.Form来获取。
(3)一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post好。
来自:https://www.cnblogs.com/mango-lee/p/7116425.html
还有一个问题就是response和response.text的区别,注意response在这里是一个变量,response是一个状态码如果显示的是[200]就说明你爬取成功,而3开头的状态码大部分说明本网站不善于用爬虫的方法预览,如果是4开头就说明爬取失败或网页丢失。response.text()的找到的是网页的代码,大部分都是html,而我用print打印出来的则是网页的代码会有许多标签,例如:
base 指定用于一个文档中包含的所有相对 URL 的根 URL。一份中只能有一个该元素。
head 包含文档相关的配置信息(元数据),包括文档的标题、脚本和样式表等。
link 指定当前文档与外部资源的关系。该元素最常用于链接 CSS,此外也可以被用来创建站点图标(比如“favicon”样式图标和移动设备上用以显示在主屏幕的图标)。
meta 表示那些不能由其它 HTML 元相关(meta-related)元素表示的元数据信息。如:base、link、script、style 或 title。
style 包含文档或者文档部分内容的样式信息,它们会被应用于包含此元素的文档。
title 定义文档的标题,显示在浏览器的标题栏或标签页上。它只应该包含文本,若是包含有标签,则它包含的任何标签都将被忽略。
来自:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element
但我发现这段代码比较复杂需要手动修改,所以我对这段代码做了改进得出

def get_info(url):
    try:
        headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
        }
        response = requests.post(url,headers)
        response.encoding = response.apparent_encoding
        print(response.text)
    except Exception as exc:
        print(exc)

我先是封装函数再这里用headers伪造了一个Google浏览器,这样能爬取更多网站。
try:和except Exception as exc:是为了在代码运行起来前,先检查一遍,如果正确无误就运行try里面的代码,负责就运行except Exception as exc中的代码,except Exception as exc中的代码意思是:发现错误时,将错误内容放进变量esc再将esc中的内容打印出来。
因为我有一亿点点追求完美,所以我将程序再次修改:

import requests
import easygui as e
from bs4 import BeautifulSoup
crawler_data = ''
search = ''
visit_state = False
def get_info(url):
    try:
        headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
        }
        response = requests.post(url,headers)
        response.encoding = response.apparent_encoding
        e.msgbox(response.text)
    except Exception as exc:
        print(exc)

while True:
    main_loop_judgment = e.buttonbox('请选择!','',['爬虫','爬取图片','读取爬虫数据','退出'])
    if main_loop_judgment == '爬虫':
        visit_state = True
        uhr_input = e.enterbox('请输入网址')
        if uhr_input == None:
            e.msgbox('请再输一次')
            continue
        get_info(uhr_input)
        continue
    if main_loop_judgment == '爬取图片':
        pcsj_pic_response = e.enterbox('请输入图片路径(网页路径 + 图片路径)')
        response = get_info(pcsj_pic_response)
        with open('素材.png','wb') as file:
            file.write(response.content)
        e.msgbox('爬取成功\n已放入同文件(图片名为素材.png)')
    while visit_state:
        if main_loop_judgment == '读取爬虫数据':
            d = e.buttonbox('是否要查找特定标签','',['是','否'])
            if d == '是':
                div = e.enterbox('请输入特定标签')
                div_b = e.enterbox('请输入特定大标签')
                if div == "" or h == "":
                    e.msgbox('请重新输入')
                    continue
                pcsj_response = search.find_all(div, class_= div_b)
                pcsj_button = pcsj_response.text
                if pcsj_button == "":
                    e.msgbox("你并没有存储爬虫数据")
                    continue
                e.msgbox(pcsj_button)
                continue
            e.msgbox(pcsj)
    if main_loop_judgment == '退出':
        break

我用的时easygui库,目的是像HTML做出按钮框。
最后说明一下我对scrapy的研究还在深入,但我还不能做出爬虫程序,所以敬请期待。
下篇预告:工具篇:02用html获取数据

标签:01,exc,python,request,爬虫,pcsj,msgbox,response
From: https://blog.csdn.net/2401_82944012/article/details/140052368

相关文章

  • Authlib,一个终极利器 Python 库专注于提供各种认证和授权解决方案
    目录01什么是Authlib?Authlib简介为什么选择Authlib?安装与配置02Authlib的基本用法实现OAuth2客户端1、创建OAuth2客户端 2、获取访问令牌3、使用访问令牌访问资源实现OAuth2服务器1、创建OAuth2服务器2、实现授权端点3、实现资源端点03Authlib......
  • 《Python 第三方模块包安装指南》
    在Python编程中,第三方模块包极大地丰富了其功能,让我们能够更高效地完成各种任务。下面将为您详细介绍如何安装Python的第三方模块包。一、使用pip命令安装pip 是Python的包管理工具,大多数情况下,我们可以通过以下命令来安装第三方模块包: pipinstall模块包名称......
  • 【适用于各种工业应用】IMLT65R050M2H IMLT65R040M2H IMLT65R015M2H IMLT65R060M2H Co
    摘要CoolSiC™650VG2MOSFET可通过降低能耗来充分利用碳化硅的性能,从而在功率转换过程中实现更高效率。这些CoolSiC650VG2MOSFET适用于各种功率半导体应用,如光伏、能量存储、电动汽车直流充电、电机驱动器和工业电源。配备CoolSiCG2的电动汽车用直流快速充电站与前几代产品......
  • Django与Flask的比较与应用场景 —— Python
    PythonWeb开发框架详解:Django与Flask的比较与应用场景在Python的Web开发领域,Django和Flask是两个非常受欢迎的框架。它们各自具有独特的特点和优势,适用于不同的开发场景。本文将对这两个框架进行详细的解释和比较,并给出一些实用的开发建议。一、Django框架概述Django是一......
  • 2024年华为OD机试真题- 电脑病毒感染-(C++/Java/python)-OD统一考试(C卷D卷)
     2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】   题目描述一个局域网内有很多台电脑,分别标注为0~N-1的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。......
  • 2024年华为OD机试真题- 找数字-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】    题目描述小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数n(1≤n≤1e9),小扇需要找到一个比n大的数字m,使得m和n对应的二进制中1的个数要相同,如:4对应二进制1008对应二进制1000其中1的......
  • python @contextmanager
          在Python中,@contextmanager是一个装饰器,用于将一个生成器函数转换为一个上下文管理器。上下文管理器是一种用于管理资源的机制,通过with语句来使用。常见的例子如文件操作,在进入with代码块时获取资源(打开文件),在离开with代码块时自动释放资源(关闭......
  • web.py框架下的application.py模块 —— Python
    本文主要分析的是web.py库的application.py这个模块中的代码。总的来说,这个模块主要实现了WSGI兼容的接口,以便应用程序能够被WSGI应用服务器调用。WSGI是WebServerGatewayInterface的缩写,具体细节可以查看WSGI的WIKI页面接口的使用使用web.py自带的HTTPServer下面这个例......
  • python爬虫1-requests库
    requests库requests提供发送网络请求和处理响应的方法安装pipinstallrequestsGET请求importrequestsurl='https://www.baidu.com/'#urlparams={'key1':'value1','key2':'value2'}#参数#发送get请求......
  • python爬虫2-HTML文本处理
    HTML文本处理re模式匹配正则表达式是一种强大的字符串匹配和处理工具,允许通过指定的模式来查找、替换和验证字符串。函数编译正则表达式re.compile(pattern,flags=0):将字符串形式的正则表达式编译为一个正则对象,用于后续的匹配操作。匹配操作re.match(pattern,str......