网站是post请求方式
时间: 2024-05-18 09:18:37 浏览: 45
如果目标网站是使用 POST 请求方式获取数据的,我们只需要在 Scrapy 中使用 `scrapy.FormRequest` 来模拟 POST 请求即可。
以下是修改后的示例代码:
```python
import scrapy
class WhfdcjySpider(scrapy.Spider):
name = 'whfdcjy'
allowed_domains = ['www.whfdcjy.cn']
start_urls = ['https://www.whfdcjy.cn:8065/website/app/Esf/index']
def parse(self, response):
# 获取当前页的数据
for item in response.css('.list li'):
yield {
'title': item.css('.title a::text').get(),
'price': item.css('.price em::text').get(),
'area': item.css('.area em::text').get(),
'address': item.css('.address::text').get(),
}
# 获取下一页的链接,继续爬取
formdata = {
'page': str(int(response.css('.page .active::text').get()) + 1)
}
yield scrapy.FormRequest(
url='https://www.whfdcjy.cn:8065/website/app/Esf/index',
formdata=formdata,
callback=self.parse
)
```
在这个例子中,我们使用了 `scrapy.FormRequest` 来构造了一个 POST 请求,其中 `formdata` 参数指定了要提交的表单数据,这里只提交了当前页码数加一的数据。在回调函数中,我们继续解析了下一页的数据。
需要注意的是,这个网站使用了一些反爬虫技术,比如限制了请求频率等。如果爬虫过于频繁,可能会被封禁 IP,所以在爬取时需要注意控制爬取速度,以免对网站造成影响。
阅读全文