Python Web 爬取 基于表单的网站

Python Web 爬取 基于表单的网站

在上一章中,我们已经看到了对动态网站的搜刮。在这一章中,让我们了解对基于用户输入的网站的爬虫,也就是基于表单的网站。

简介

如今,WWW(万维网)正在向社会媒体和用户生成的内容发展。因此,问题出现了,我们如何访问这种超越登录屏幕的信息?为此,我们需要处理表单和登录问题。

在前几章中,我们使用HTTP GET方法来请求信息,但在本章中,我们将使用HTTP POST方法,将信息推送到网络服务器进行存储和分析。

与登录表单互动

在互联网上工作时,你一定与登录表单交互过很多次。它们可能非常简单,比如只包括很少的HTML字段、一个提交按钮和一个操作页面,或者它们可能很复杂,有一些额外的字段,比如电子邮件、留言以及出于安全原因的验证码。

在本节中,我们将在Python requests库的帮助下处理一个简单的提交表单。

首先,我们需要导入 requests 库,如下所示

import requests

现在,我们需要为登录表格的字段提供信息。

parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}

在下一行代码中,我们需要提供一个URL,在这个URL上会发生表单的动作。

r = requests.post(“enter the URL”, data = parameters)
print(r.text)

运行该脚本后,它将返回发生动作的页面内容。

假设你想用表单提交任何图片,那么用request.post()就非常容易。你可以在以下Python脚本的帮助下理解它

import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)

从网络服务器加载Cookies

Cookie,有时也被称为网络cookie或互联网cookie,是由网站发送的一小段数据,我们的计算机将其存储在位于我们的网络浏览器内的文件中。

在与登录表格打交道的情况下,cookie可以有两种类型。一种是我们在上一节中提到的,允许我们向网站提交信息,第二种是让我们在访问网站的整个过程中保持永久 “登录 “状态。对于第二种形式,网站使用cookies来跟踪谁在登录和谁没有登录。

Cookie是做什么的

这些天来,大多数网站都在使用cookies进行跟踪。我们可以在以下步骤的帮助下了解cookies的工作

第1步 - 首先,网站将验证我们的登录凭证,并将其存储在我们浏览器的cookie中。这个cookie通常包含一个服务器生成的toke、超时和跟踪信息。

第2步 --接下来,网站将使用该cookie作为认证的证明。每当我们访问该网站时,这种认证总是显示出来。

对于网络搜刮者来说,Cookie是非常有问题的,因为如果网络搜刮者不跟踪Cookie,提交的表格就会被送回来,在下一个页面,似乎他们从来没有登录过。在Python 请求 库的帮助下,跟踪cookie是非常容易的,如下图所示

import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)

在上面这行代码中,URL将是作为登录表格的处理器的页面。

print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)

运行上述脚本后,我们将从最后一次请求的结果中检索出cookies。

还有一个关于cookie的问题,有时网站经常在没有警告的情况下修改cookie。这种情况可以用 request.Session() 来处理,如下所示

import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)

在上面这行代码中,URL将是作为登录表格的处理器的页面。

print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)

观察一下,你可以很容易地理解带会话和不带会话的脚本之间的区别。

用Python实现表单自动化

在这一节中,我们将讨论一个名为Mechanize的Python模块,它将减少我们的工作,使填写表格的过程自动化。

Mechanize 模块

Mechanize 模块为我们提供了一个与表单交互的高级接口。在开始使用它之前,我们需要用以下命令安装它

pip install mechanize

注意,它只在 Python 2.x 中工作。

例子

在这个例子中,我们将自动填写一个有两个字段的登录表,即电子邮件和密码-

import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()

上面的代码非常容易理解。首先,我们导入了 mechanize 模块。然后创建了一个Mechanize浏览器对象。然后,我们导航到登录的URL并选择了表单。之后,名字和值被直接传递给浏览器对象。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程