我想凑这个网页:http://goo.gl/Eqfiuy如何从已知的html编写输入数据处理器?
我想给输入从列表和scrapy日期应该给该值的形式和被给予响应“打印报告”重定向到结果页。然后我想解析它中的数据。
我的问题是如何使scrapy给html输入日期?
我使用scrapy 0.16.5,ubuntu的12.04,火狐+萤火虫+火力发现者
请举例代码
我想凑这个网页:http://goo.gl/Eqfiuy如何从已知的html编写输入数据处理器?
我想给输入从列表和scrapy日期应该给该值的形式和被给予响应“打印报告”重定向到结果页。然后我想解析它中的数据。
我的问题是如何使scrapy给html输入日期?
我使用scrapy 0.16.5,ubuntu的12.04,火狐+萤火虫+火力发现者
请举例代码
基本上,这种形式使POST请求http://164.100.167.12/pwd/report.php
。下面是如何在Scrapy模拟它:
from scrapy.http import FormRequest
from scrapy.spider import BaseSpider
class MySpider(BaseSpider):
name = "myspider"
allowed_domains = ["http://164.100.167.12/"]
report_date = '30/07/2013'
def start_requests(self):
yield FormRequest(url='http://164.100.167.12/pwd/report.php',
method='POST',
callback=self.parse_page,
formdata={'reportdate': self.report_date})
def parse_page(self, response):
# save the pdf
with open('output.pdf', 'w') as f:
f.write(response.body)
注意,有在生成的HTML的标签embed
,有一个PDF里面 - 它保存到output.pdf
。
希望有所帮助。
由于alecxe,这是工作代码:
都感谢你的帮助的from scrapy.spider import BaseSpider
from scrapy.http import FormRequest
from datetime import date
from dateutil.rrule import rrule, DAILY
class MySpider(BaseSpider):
name = "tnpwd"
allowed_domains = ["http://164.100.167.12/"]
start_urls = ["http://164.100.167.12/pwd/report.php"]
def start_requests(self):
start_date = date(2012, 06, 15)
end_date = date(2012, 06, 20)
for i in rrule(DAILY, dtstart= start_date, until=end_date):
report_date = i.strftime('%d/%m/%Y')
file_name = i.strftime('%d_%m_%Y')
yield FormRequest(url='http://164.100.167.12/pwd/report.php',
method='POST',
callback=self.parse_page,
formdata={'reportdate': report_date},
meta = {'file_name': file_name})
def parse_page(self, response):
a= response.meta['file_name']
print 'downloading %s' %a
with open('/home/USERNAME/Documents/test/%s.pdf' %a, 'w') as f:
f.write(response.body)
第一。我遇到错误说没有在文件中找到蜘蛛。我正在使用命令$ scrapy runspider file.py.这是错误:_runspider:错误:在文件file.py_中找不到蜘蛛。对不起,但我是使用Scrapy的新手。请告诉我我应该在终端中使用的命令重复您的过程。 –
不客气。不要将其称为'file.py'。选择另一个名字。 – alecxe
感谢它正在运行:) –