㈠ 我想写一个批量python登录网站,并且登录后指定一个网址判断网页是否是我想要的东西,把我
我们将会按照以下步骤进行:
提取登录需要的详细信息
执行站点登录
爬取所需要的数据
在本教程中,我使用了以下包(可以在 requirements.txt 中找到):
requests
lxml
步骤一:研究该网站
打开登录页面
进入以下页面 “”。你会看到如下图所示的页面(执行注销,以防你已经登录)
仔细研究那些我们需要提取的详细信息,以供登录之用
在这一部分,我们会创建一个字典来保存执行登录的详细信息:
1. 右击 “Username or email” 字段,选择“查看元素”。我们将使用 “name” 属性为 “username” 的输入框的值。“username”将会是 key 值,我们的用户名/电子邮箱就是对应的 value 值(在其他的网站上这些 key 值可能是 “email”,“ user_name”,“ login”,等等)。
2. 右击 “Password” 字段,选择“查看元素”。在脚本中我们需要使用 “name” 属性为 “password” 的输入框的值。“password” 将是字典的 key 值,我们输入的密码将是对应的 value 值(在其他网站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。
3. 在源代码页面中,查找一个名为 “csrfmiddlewaretoken” 的隐藏输入标签。“csrfmiddlewaretoken” 将是 key 值,而对应的 value 值将是这个隐藏的输入值(在其他网站上这个 value 值可能是一个名为 “csrftoken”,“ authenticationtoken” 的隐藏输入值)。列如:“”。
最后我们将会得到一个类似这样的字典:
payload = {
"username": "<USER NAME>",
"password": "<PASSWORD>",
"csrfmiddlewaretoken": "<CSRF_TOKEN>"
}
请记住,这是这个网站的一个具体案例。虽然这个登录表单很简单,但其他网站可能需要我们检查浏览器的请求日志,并找到登录步骤中应该使用的相关的 key 值和 value 值。
步骤2:执行登录网站
对于这个脚本,我们只需要导入如下内容:
import requests
from lxml import html
首先,我们要创建 session 对象。这个对象会允许我们保存所有的登录会话请求。
session_requests = requests.session()
第二,我们要从该网页上提取在登录时所使用的 csrf 标记。在这个例子中,我们使用的是 lxml 和 xpath 来提取,我们也可以使用正则表达式或者其他的一些方法来提取这些数据。
login_url = ""
result = session_requests.get(login_url)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
接下来,我们要执行登录阶段。在这一阶段,我们发送一个 POST 请求给登录的 url。我们使用前面步骤中创建的 payload 作为 data 。也可以为该请求使用一个标题并在该标题中给这个相同的 url 添加一个参照键。
result = session_requests.post(
login_url,
data = payload,
headers = dict(referer=login_url)
)
步骤三:爬取内容
现在,我们已经登录成功了,我们将从 bitbucket dashboard 页面上执行真正的爬取操作。
url = ''
result = session_requests.get(
url,
headers = dict(referer = url)
)
为了测试以上内容,我们从 bitbucket dashboard 页面上爬取了项目列表。我们将再次使用 xpath 来查找目标元素,清除新行中的文本和空格并打印出结果。如果一切都运行 OK,输出结果应该是你 bitbucket 账户中的 buckets / project 列表。
tree = html.fromstring(result.content)
bucket_elems = tree.findall(".//span[@class='repo-name']/")
bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]
print bucket_names
你也可以通过检查从每个请求返回的状态代码来验证这些请求结果。它不会总是能让你知道登录阶段是否是成功的,但是可以用来作为一个验证指标。
例如:
result.ok # 会告诉我们最后一次请求是否成功
result.status_code # 会返回给我们最后一次请求的状态
就是这样。
㈡ Python打开网页并另存为静态html怎么实现
用Python的requests库解决这个问题比较简单,例程如下:
importsys
importrequests
reload(sys)
sys.setdefaultencoding('utf-8')
r=requests.get('xxx网址')
fh=open('test.html','w')
fh.write(r.text)
fh.close()
说明一下,requests库不是Python内置的,不过很流行,很多发行版都带,没带的话就去requests官网去下载,或者用 pip install requests命令安装最新版。
这个程序里在保存文件前,还需要把字符编码设置一下,用的是自带的sys库。
㈢ python怎么用代码打开网络
咨询记录 · 回答于2021-10-07
㈣ python如何定时提取网页信息并自动保存
有现成的工具可以自动提取保存,比如mutoubrowse也可以定时保存。
㈤ Python 制作网页打不开 直接跳到打开或者保存文件
需要对Lighttpd进行配置,指明py文件是作为cgi程序运行的。
修改配置文件:/etc/lighttpd/lighttpd.conf
在以下小节内添加python内容:
server.moles = ( "mod_cgi", )
cgi.assign = (
".py" => "/usr/bin/python"
)
㈥ 如何用python把网页上的文本内容保存下来
1、了解Python如何获取网页内容。
㈦ 如何批量打开网页
推荐Replace Pioneer,很容易做到,步骤:
1. 准备一个文本文件a.txt,需要如下格式:
http://www..com/1.html
http://www..com/2.html
...
注:地址必须以http://开头
2. 打开Replace Pioneer,打开菜单Tools->Batch Runner.
3. 点击Import List把准备好的a.txt 导入
4. 如果需要保存的名字不合理,可以在set output filename里修改。
5. 选中下面的change output file directory并在右边输入文件的保存目录
6. 点击Copy/Download按钮,所有文件就会以指定的文件名存入指定的目录。
==========================================
Replace Pioneer下载:
http://www.mind-pioneer.com/replace
㈧ 想批处理打开网页并保存,批处理批量打开网页我知道了,但打开的网页怎么保存呢
单单使用批处理是无法实现的,为了你这个问题。我确实想了不少办法,到最后在论坛看到一个curl工具,支持多种协议。其用法也很简单。唯一不一样的地方,这个工具不会用IE打开网页,只会把网页保存下来。
例:
curl
www..com
>c:\.htm
这样就会在C盘下保存www..com为.htm
如果你需要修改的话,可以HI我,或者在追问里把你的以前的代码帖出来,修改一下就好了。
补充:我昨天晚上试验了几次,大部分网页保存下来后都能打开,有些特别的不行。我不能保证100%完成,但90%应该是可以的。不管怎么说,也相当于给你减少一部分工作量了。
现在我需要你的代码,或者是你代码读取的那个文本里的网址的排列顺序。这样就可以给你写出来了。或者加Q聊,363158440