开发者社区 问答 正文

Web抓取和格式化,在Repl.it iOS应用程序上使用SWIFT登录

我正在与几个朋友一起构建一个应用程序,该应用程序基于对数据的抓取,并从几个特定的网站为用户重新格式化,还有一个登录到某个网站,代表用户刮取数据,以使它看起来更好看。我们只有一台苹果电脑可以工作,我们想要分而治之,所以我们决定让一些人在工作的代码端做更多的工作。

我们转向使用Repl.it和在他们的平台上使用快速。我们想要实现的第一个特性是登录特性,我们很快就用python(因为我们更熟悉)解决了它。经过几个小时的尝试,我的第一个问题是,我们应该如何用cookie和CSRF令牌来编写登录到网站的代码,比如在python中是如何使用请求之类的?

在那不起作用之后,我们试图实现我们认为更简单的网络抓取。结果没那么快。我们学习了几个教程并阅读了文档,但不知道为什么代码没有运行。顺便说一句,只是打印出网站的html是行不通的。

这是我们使用的代码:

import Foundation 

let igBaseUrl = "www.example.com/"

let url = URL(string: igBaseUrl)!

let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
  guard let data = data else {
    print("data was nil")
    print()
    return
  }

  guard let htmlString = String(data: data, encoding: String.Encoding.utf8) else {
    print("Cannot cast data into string")
    return
  }

  print(htmlString)
  print(data)
}

task.resume()

如何在repl中运行抓取代码和格式化代码,以便我们能够正确和快速地将文本格式化并将其包含在我们的应用程序中?

提前谢谢你!

展开
收起
游客5akardh5cojhg 2019-12-14 18:03:43 968 分享 版权
阿里云 AI 助理回答

在Repl.it上使用Python进行登录和网络抓取时,你需要处理cookie和CSRF令牌以维持会话状态。以下是一个简化的示例,说明如何使用requests库来实现这一目标:

登录并保持会话

首先,确保安装了requests库。在Repl.it中,你通常不需要手动安装它,因为大多数环境已经预装了这个库。

import requests
from bs4 import BeautifulSoup  # 如果需要解析HTML的话

# 登录URL和数据
login_url = "https://example.com/login"
login_data = {
    "username": "your_username",
    "password": "your_password",
    "csrfmiddlewaretoken": "GET_THIS_FROM_THE_LOGIN_PAGE_SOURCE"  # 实际操作中需要从网页源代码获取或通过请求获得
}

# 使用Session来保持cookie
session = requests.Session()

# 获取登录页面以获取CSRF令牌(如果动态生成)
response = session.get(login_url)
soup = BeautifulSoup(response.text, 'html.parser')
csrf_token = soup.find('input', attrs={'name': 'csrfmiddlewaretoken'})['value']
login_data["csrfmiddlewaretoken"] = csrf_token  # 更新你的登录数据

# 尝试登录
response = session.post(login_url, data=login_data)

# 检查是否登录成功,比如检查响应的状态码或内容
if response.status_code == 200:
    print("Login successful!")
else:
    print(f"Login failed. Status code: {response.status_code}")

# 现在你可以用这个session去访问需要登录的其他页面
scraped_url = "https://example.com/data_page"
scraped_response = session.get(scraped_url)

# 打印或处理抓取到的数据
print(scraped_response.text)

在Repl.it中运行

  1. 创建新项目:在Repl.it上创建一个新的Python项目。
  2. 编写代码:将上述代码粘贴到主.py文件中,并根据实际情况修改URL、用户名、密码等信息。
  3. 运行代码:点击Repl.it界面右上角的绿色运行按钮来执行你的脚本。
  4. 查看输出:控制台会显示登录尝试的结果以及从目标网站抓取的数据。

注意事项

  • 请确保遵守目标网站的robots.txt规则和使用条款,不要对网站造成不必要的负担。
  • 对于动态加载的内容,可能需要使用Selenium等工具模拟浏览器行为。
  • 处理CSRF令牌时,注意其获取方式可能因网站而异,有时需要分析登录表单提交的具体细节。

希望这能帮助你们顺利推进项目!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答