如何填写html表单并从网站上删除?

时间:2013-06-03 21:39:18

标签: python web-scraping beautifulsoup mechanize scrapy

我正在研究一个学校项目。我想建立一个Andriod应用程序但在此之前我想从220.225.101.27/MPLogin/eSewa/VehicleSearch.aspx中抓取一些数据并且必须保存在我的数据库中。当你进入这个网站,你将不得不填写车辆注册号,然后它将显示有关车辆的所有详细信息。我不需要完整的详细信息,但我只需要主人的名字。我想得到所有组合的详细信息车辆登记号码。

我做了一些谷歌搜索,发现了一些python库。

  1. BeautifulSoup
  2. Scrapy
  3. 机械化
  4. 我是python的新手。请忽略如果我混合了一些术语。我只是想知道:

    1. 我应该使用哪个图书馆?哪个最好?
    2. 关于填写html表单然后通过python获取详细信息我应该知道什么?
    3. 要成功完成所有这些工作,我应该先知道什么?
    4. 我需要使用哪些python模块?
    5. 如何将此数据保存在我的数据库或某种Excel文件中?
    6. 网站在.net会导致任何问题吗?
    7. 我已经阅读了Beautifulsoup的文档,并且通过使用这个我已成功打印了googlenews标题文本。但这是基本的。填写html表单然后获取详细信息很困难。

      我知道这是一个很长的问题,但我想自己学习这些东西。如果有人可以一步一步指导我,那将是非常好的。

2 个答案:

答案 0 :(得分:9)

由于您没有提供任何代码,而且您基本上是在寻求建议,我只会向您提供我的见解。

您提到的所有事实都指向scrapy。它是一个非常强大的网络抓取工具。

基本上,您应该执行以下步骤来实现您的任务:

说到专门解析这个网站,它有一个基本的html表单,可以由scrapy的FormRequestFormRequest.from_response以编程方式提交。然后,您可以使用管道将废弃数据存储在数据库或csv或其他任何内容中。

回来问你是否有任何特定的(适合q / a)问题。

希望能帮助您入门。

答案 1 :(得分:3)

这取决于您的确切要求。如果您不需要表单页面中的任何数据,则可以跳过此阶段并直接发送请求。如果您只需要进行一些交互,那么完整的屏幕抓取库可能会让您感到有些畏惧。你可以简单地使用一个http库。它更容易学习,您可以更接近HTTP和HTML,这可能是您的老师希望您学习的内容。

E.g。使用requests库:

>>> import requests
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://yourposturl", data=payload)
>>> print r.text

假设您知道html,您应该能够从表单页面的html中提取yourposturl和变量。

然后,您可以使用正则表达式从生成的html页面中提取数据。这不建议用于一般的抓取解决方案,但是为了从单个页面提取数据,通常很好。